【发布时间】:2016-11-16 01:16:49
【问题描述】:
我正在开发一个 Python 函数,该函数将使用正则表达式在句子中查找括号内的首字母缩写词及其在句子中的含义。例如,“国务院(DOS)是负责美国国际关系的美国联邦行政部门”。
到目前为止我所拥有的是:
text = "The Department of State (DOS) is the United States federal executive department responsible for international relations of the United States."
pattern = re.compile(r"^(.*?)(?:\((.*)\))?$")
result = ''
for i in pattern.finditer(text):
result += text
print (result)
输出返回整个文本句子。我是使用正则表达式的新手,可能误解了结构。据我了解,r 将匹配字符,^ 断言字符串开头的位置,.*? 匹配任何字符,*? 匹配零次到无限次,? 将匹配零次或一次,\(\) 将匹配括号,$ 在末尾断言位置。如果我对其中的任何内容有很大的误解,我深表歉意,我感谢您对理解这一点的任何帮助。
谢谢!
【问题讨论】:
-
您当前的模式
r"^(.*?)(?:\((.*)\))?$"将匹配^行的开头,然后是(.*?),后面是括号\((.*)\)?中的任何内容的0 或1 个实例@ 是在末尾行$。因此,如果括号中的内容位于行尾,您只会看到括号中的内容。 -
嗨,这不是你要找的东西,但我在没有正则表达式的情况下用 python 做了这个来尝试解决同样的问题:gist.github.com/nmolivo/ed07ccc158e230b8e7fcaa3b04dbabc1希望它可以帮助!