将首字母缩略词及其含义与Python正则表达式匹配
我正在开发一个Python函数,它将使用正则表达式在句子中查找括号中的首字母缩写词及其在句子中的含义。例如,“国务院(DOS)是负责美国国际关系的美国联邦执行部门。” 到目前为止,我得到的是:将首字母缩略词及其含义与Python正则表达式匹配,python,regex,Python,Regex,我正在开发一个Python函数,它将使用正则表达式在句子中查找括号中的首字母缩写词及其在句子中的含义。例如,“国务院(DOS)是负责美国国际关系的美国联邦执行部门。” 到目前为止,我得到的是: text = "The Department of State (DOS) is the United States federal executive department responsible for international relations of the United States."
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)
输出返回整个文本句子。我对使用regex还不熟悉,可能误解了它的结构。据我所知,r
将匹配字符,^
声明字符串开头的位置,*?
匹配任何字符,*?
在零次和无限次之间匹配,?
将匹配零次或一次,\(\)
将匹配括号,而$
在末尾声明位置。我很抱歉,如果我误解了这一点,我感谢任何帮助理解这一点
谢谢
r将匹配字符
“r”是一个python前缀,它将导致字符串被视为原始字符串文本。它不是re
语法的一部分
那个?将匹配0或1次
这里提到的?
是(?:
的一部分,这意味着这将成为一个非捕获组,它是匹配的一部分,但不会作为匹配组返回
$在末尾声明位置
它声明整个字符串末尾的位置,而不仅仅是匹配的部分
此模式将获得名称和缩写:
pattern = re.compile("^(.*?)\((.*?)?\)")
for i in pattern.finditer(text):
name, abbrev = i.groups()
print name.strip(), abbrev
r将匹配字符
“r”是一个python前缀,它将导致字符串被视为原始字符串文字。它不是re
语法的一部分
?将匹配零次或一次
这里提到的?
是(?:
的一部分,这意味着这将成为一个非捕获组,它是匹配的一部分,但不会作为匹配组返回
$在末尾声明位置
它声明整个字符串末尾的位置,而不仅仅是匹配的部分
此模式将获得名称和缩写:
pattern = re.compile("^(.*?)\((.*?)?\)")
for i in pattern.finditer(text):
name, abbrev = i.groups()
print name.strip(), abbrev
你可以这样做
import re
text = "The Department of State (DOS) is the United States federal executive department responsible for international relations of the United States."
acronym = re.search(r"(?<=\().*?(?=\))", text).group(0).lower()
regex = r"(?<= )"
for i in range(0, len(acronym)):
if i > 0: regex += " "
regex += acronym[i] + r".*?"
regex += r"(?= )"
meaning = re.search(regex, text).group(0).lower()
print("Acronym '"+acronym+"' stands for '"+meaning+"'.")
重新导入
text=“国务院(DOS)是负责美国国际关系的美国联邦执行部门。”
缩写=re.search(r)(?你可以这样做
import re
text = "The Department of State (DOS) is the United States federal executive department responsible for international relations of the United States."
acronym = re.search(r"(?<=\().*?(?=\))", text).group(0).lower()
regex = r"(?<= )"
for i in range(0, len(acronym)):
if i > 0: regex += " "
regex += acronym[i] + r".*?"
regex += r"(?= )"
meaning = re.search(regex, text).group(0).lower()
print("Acronym '"+acronym+"' stands for '"+meaning+"'.")
重新导入
text=“国务院(DOS)是负责美国国际关系的美国联邦执行部门。”
acronym=re.search(r“(?您当前的模式r”^(.*)(:\(.*))?$”
将匹配行的开头^
,后跟任何(.*)
,后跟括号中任何内容的0或1个实例\(.*))?
这是在行尾$
。因此,如果它在行尾,您只能在括号中看到它。您好,这不是您想要的,但我在python中没有regex的情况下制作了它,以尝试解决同样的问题:希望它能有所帮助!您当前的模式r“^(.*?:(.*)?$”
将匹配行的开头^
,后跟任何(.*)
,后跟括号中任何内容的0或1个实例\(.*))?
这是在行尾的$
。因此,如果它在行尾,您只会看到括号中的内容。您好,这不是您要查找的内容,但我在python中不使用regex制作了此项,以尝试解决相同的问题:希望它能有所帮助!