python - 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
输出:
命中:12my90 指数
范围:(9, 15)
比赛周围的话:12my90
为了获得匹配的单词和之前的单词,我尝试了:
pattern = re.compile(r"(\b(w+)\b)\s(\b12(\w+)90\b)",re.IGNORECASE |
re.UNICODE)
这不会产生匹配项。
解决方案
在第二种模式中,您必须逃避w+
like \w+
。
除此之外,您的示例中有一个换行符,您可以使用另一个以下内容进行匹配\s
您具有 3 个捕获组的模式可能看起来像
(\b\w+\b)\s(\b12\w+90\b)\s(\b\w+\b)
您可以使用捕获组来获取值
print("Words around match: " + m.group(1) + " " + m.group(3))
推荐阅读
- r - 如果它们不同,则用它们的字符串分隔列
- c++ - 如果类数组中的向量被动态 push_backed,内存如何工作?
- multithreading - 为什么线程中的代码执行了两次?
- java - 如何在java中创建一个1秒的计时器?
- wordpress - 我在哪里可以找到在产品类别网页上的产品图像上生成文本覆盖(例如“缺货”)的代码?
- angular - 将身份验证参数传递给服务器上的 power-bi 报告服务
- javascript - 使用变量获取位置,然后修改 mongodb 中的特定对象
- excel - 有没有办法跳过错误“找不到文件名”并移动到下一个文件
- ada - 发现命令行编译GNAT有错误
- rabbitmq - RabbitMQ 不会启用管理插件