Python 使用正则表达式匹配列表中的单词,

Python 使用正则表达式匹配列表中的单词,,python,regex,list,Python,Regex,List,我对regex非常陌生,我正在尝试在一个列表中查找以单词的每个字母开头的所有单词 例如,我有以下列表: [' MRI', 'fMRI ', 'PPE', 'FFE'] 我试图在文本中找到与这些匹配的字母,如果不匹配,就忽略它 因此,对于上面的列表,请查找文本是否包含 Magnetic resonance imaging functional Magnetic resonance imaging personal protection equipment None 我发现有几种方法可以做到这一

我对regex非常陌生,我正在尝试在一个列表中查找以单词的每个字母开头的所有单词

例如,我有以下列表:

[' MRI', 'fMRI ', 'PPE', 'FFE']
我试图在文本中找到与这些匹配的字母,如果不匹配,就忽略它

因此,对于上面的列表,请查找文本是否包含

Magnetic resonance imaging
functional Magnetic resonance imaging
personal protection equipment
None
我发现有几种方法可以做到这一点,但当单词出现在列表中时就不行了


如果有人能在此提供帮助,我们将不胜感激。

使用
re
库。不区分大小写时,在其中使用
flags=re.I
选项

import re
acronyms=['  MRI', 'fMRI', 'PPE', 'FFE']
text="""pull porous experiment
 public protection expertise
personal protective 
equipment
here is a magnetic resonance interglobular section
with a certain energy measure is on a table"""
matched={}
for a in acronyms:
  pattern=''
  for letter in a.strip():
    pattern+='[ ]*{}[^ \n]+[ \n]+'.format(letter)
  pattern+=''
  print(a.strip(),pattern)
  matched.update({a.strip():re.findall(pattern,text,flags=re.I)})

print(matched)
matched现在应该包含每个首字母缩略词的字典和每个首字母缩略词的匹配项列表

现在输出
匹配了
(注意,首字母缩略词已经去掉了前导和尾随空格)

这允许结果跨越多行,但这些行尾字符(
\n
)包含在匹配结果中。如果您希望这些是空格,例如可以使用
re.sub
[\n]+
替换为


以下是对
re
库的参考:。下面是对正则表达式的许多可能有用的通用解释之一:。

您对这个测试用例的预期输出是什么?例如,第三行是否与
PPE
匹配,因为大小写不正确?我的预期输出是一个列表,其中包含未缩写的单词。我明白你的意思,希望搜索不会出现大小写,虽然我收到了这个错误:re.error:missing),但在22号位置的子模式是未终止的,请你解释一下重模式,以便我了解它的意思。谢谢您需要在
pattern+=')之前插入制表符。
我尝试了这段代码,但它不起作用。。。我做错什么了吗?奇怪的是,这并没有返回任何东西。它会影响re吗?一些文本有破折号,如“粗体”表示“血氧水平依赖”
{'MRI': [' magnetic resonance interglobular '], 'fMRI': [], 'PPE': ['pull porous experiment\n ', 'public protection expertise\n', 'personal protective \nequipment\n'], 'FFE': []}