Python Regex - 获取匹配词

标签 python regex

我想在比赛前后获得单词。我可以使用 string.split(' ') - 但由于我已经使用了正则表达式,难道没有更好的方法只使用正则表达式吗?

使用匹配对象,我可以获得准确的位置。但是,此位置是字符索引的。

import re

myString = "this. is 12my90\nExample string"
pattern = re.compile(r"(\b12(\w+)90\b)",re.IGNORECASE |  re.UNICODE)

m = pattern.search(myString)
print("Hit: "+m.group())
print("Indix range: "+str(m.span()))
print("Words around match: "+myString[m.start()-1:m.end()+1]) # should be +/-1 in _words_, not characters

输出:

Hit: 12my90 Indix

range: (9, 15)

Words around match: 12my90

为了得到匹配的词和之前的词,我试过:

pattern = re.compile(r"(\b(w+)\b)\s(\b12(\w+)90\b)",re.IGNORECASE | 
re.UNICODE)

没有匹配项。

最佳答案

在第二个模式中,你必须像 \w+ 这样转义 w+

除此之外,您的示例中还有一个换行符,您可以使用以下 \s

进行匹配

具有 3 个捕获组的模式可能看起来像

(\b\w+\b)\s(\b12\w+90\b)\s(\b\w+\b)

Regex demo

您可以使用捕获组来获取值

print("Words around match: " + m.group(1) + " " + m.group(3))

关于Python Regex - 获取匹配词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58246803/

相关文章:

Python-brisa 可在 Eclipse 中运行,但不能在 shell 中运行

python - 如何在保持目录结构的同时提取所有 .tar.gz 文件?

python - 尝试在 iOS 设备上使用 ReportLab 创建 PDF 时出现权限错误

python - 在 CSV 文件中查找多次出现的对

python - 使用python正则表达式匹配时间

regex - 是否可以排除 apache 访问日志中指定的 GET 参数?

python - 如何仅打印键/值子集的字典键/值组合?

python - Pandas 与正则表达式 "."点元字符不一致?

java - find -number A www.google.com 命令的正则表达式是什么?

javascript - 正则表达式匹配字符时出错