python - python正则表达式:如何忽略不相关的匹配?
问题描述
我有一个文本,有一个句子包含“自从”这个词。我的尝试是使用正则表达式来提取单词“since”之后的文本,直到下一个和上一个时期。例如,文本是:
text = "I like to live in a big city. Today is Monday, since yesterday was Sunday."
我的正则表达式是
rule = re.compile(r'([a-zA-Z0-9\,\.\s\'])\bsince\b([a-zA-Z0-9\,\.\s\'])', re.IGNORECASE)
patterns = rule.match(text)
但是,patterns.group(1)
返回I like to live in a big city. Today is Monday,
包含我不想要的句子,即我只想要Today is Monday,
。如何使用正则表达式来做到这一点?
解决方案
你可以使用这个正则表达式:
[^.]*? since [^.]*?\.
代码:
import re
text = "I like to live in a big city. Today is Monday, since yesterday was Sunday."
print (re.findall(r'[^.]*? since [^.]*?\.', text))
输出:
[' Today is Monday, since yesterday was Sunday.']
正则表达式详细信息:
[^.]*?
: 匹配 0 个或多个不是点的字符since
: 匹配" since "
[^.]*?
: 匹配 0 个或多个不是点的字符\.
: 匹配一个点
推荐阅读
- android - In App Billing BroadcastReceiver 内存泄漏
- vba - VBA,使用用户定义的函数从范围中查找单词
- php - 在 codeigniter 中使用 distinct 选择多个列
- java - 某些短语后的java正则表达式匹配
- php - 替换 php 5.6 中的数组定义
- r - 选择时间数据
- ios - 动画时居中 UIImageView 不起作用
- ssas - DAX SUMX:将过滤后的表存储在 VAR 中并稍后在表达式中引用其列
- linux - 就 rpm 规范而言,“%{__install}”是什么意思?
- javascript - ASP.NET MVC 查询不显示不同的值