Python 正则表达式提取包含单词的句子
我有一根这样的绳子Python 正则表达式提取包含单词的句子,python,regex,Python,Regex,我有一根这样的绳子 Good Morning Hello There - PROTECT FROM FREEZE protect from freeze FORKLIFT UNLOAD -Please ship it with care Thank you 我需要一个正则表达式来匹配两行的防冻和另一行的叉车卸载 我尝试了*冻结。*和*叉车。*(使用re.IGNORECASE忽略大小写),但是这个正则表达式选择了整行 此正则表达式的输出如下所示: Hello There - PROTECT
Good Morning
Hello There - PROTECT FROM FREEZE
protect from freeze
FORKLIFT UNLOAD -Please ship it with care
Thank you
我需要一个正则表达式来匹配两行的防冻和另一行的叉车卸载
我尝试了*冻结。*
和*叉车。*
(使用re.IGNORECASE忽略大小写),但是这个正则表达式选择了整行
此正则表达式的输出如下所示:
Hello There - PROTECT FROM FREEZE
protect from freeze
FORKLIFT UNLOAD -PLEASE HAVE SKID AT TAIL
期望输出:
PROTECT FROM FREEZE
protect from freeze
FORKLIFT UNLOAD
假设您只想匹配每行上所有大写字母的第一个系列,您可以尝试以下方法:
inp=“”你好-防止冻结
防冻
叉车卸货-请在尾部安装防滑垫
matches=re.findall(r'^.*.\b([A-Z]{2,}(?[A-Z]{2,})*'),inp,flags=re.MULTILINE)
打印(匹配)
这张照片是:
['PROTECT FROM FREEZE', 'PROTECT FROM FREEZE', 'FORKLIFT UNLOAD']
你可以用
[^-\n]*F(?:REEZE | ORKLIFT)[^-\n]*
或者,如果您需要确保冻结
和叉车
是完整的单词:
[^-\n]*\bF(?:REEZE | ORKLIFT)\b[^-\n]*
见
详细信息
-除[^-\n]*
和换行符以外的零个或多个字符-
-单词边界\b
-与F(?:冷冻|叉车)
相同,但效率更高(?:冷冻|叉车)
-单词边界\b
-除[^-\n]*
和换行符以外的零个或多个字符-
重新导入
text='早上好\n那里有防滑装置-防冻\n防冻\n叉车卸载-请在尾部安装防滑装置\n谢谢
res=re.findall(r'[^-\n]*\bF(?:REEZE | ORKLIFT)\b[^-\n]*',text,re.IGNORECASE)
打印([x.strip()用于x英寸分辨率])
##=>[“防冻”、“防冻”、“叉车卸载”]
为什么要为此使用正则表达式?要匹配精确的子字符串PROTECT FROM FREEZE
只需在my_string中使用'PROTECT FROM FREEZE'。您只能匹配单词周围的大写字符或空格[A-Z]*\b(?:FREEZE | fork)\b[A-Z]*
您可以使用[^-\n]*F(?:REEZE | ORKLIFT)[^-\n]*
,看,实际上会有很多这样的句子。。。。我无法手动输入所有@Thomsiff的extacrt句子,请编辑您的问题,以澄清“句子”的含义以及需要提取的句子。谢谢@Wiktor Stribizew