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]*
    -除
    -
    和换行符以外的零个或多个字符
见a:

重新导入
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