python正则表达式显示跨度之间的所有字符

cl25kdpy  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(195)

我想查看span=(179331)之间的所有内容,如何显示?提前谢谢

new_v1 = re.compile(r'Sprzedawca:')
new_v2 = re.compile(r'lp ')
print(new_v1.search(txt))
print(new_v2.search(txt))

输出:

<re.Match object; span=(179, 199), match='Sprzedawca: Nabywca:'>
<re.Match object; span=(328, 331), match='lp '>
bf1o4zei

bf1o4zei1#

这是一个如何在开始和停止之间匹配文本的示例。我选择了一个简单的文本,根据您的需要调整regexp:

import re

RE = re.compile(r'(?:Start)(.*)(?:End)')

# re.compile(..., flags=re.DOTALL) to match also newlines

match = RE.search('testStartTextBetween123ABCxyzEndtest')
if match:
    print(match.group(1)) # TextBetween123ABCxyz

regexp中有三个组(组在括号中)。第一个匹配文本标记的开头,第二个匹配所有内容,最后一个匹配文本标记的结尾。
这个 (?: 符号表示不保存结果匹配项。只有中间组保存为第一个(也是唯一一个)匹配的子组。这相当于 match.group(1)

mzillmmw

mzillmmw2#

函数调用 new_v1.search(txt) 返回具有各种属性的匹配对象。您可以调用它的方法来检索有关匹配和匹配文本的各种事实。提取匹配文本的最简单方法可能是

print(new_v1.search(txt).group(0))

但你当然也可以拔出 startend 属性并自己提取跨度:

matched = new_v1.search(txt)
print(txt[matched.start():matched.end()])

演示:https://ideone.com/cfxjx2
当然,对于一个平凡的正则表达式,匹配的文本就是正则表达式本身;也许您实际上更感兴趣的是在字符串中找到匹配项的确切位置。

相关问题