Python 用于排除匹配项的常规分析模式
如何仅检索Python 用于排除匹配项的常规分析模式,python,regex,Python,Regex,如何仅检索NP: ROOT -> NP 更一般的string1->string2 我需要在捕获组中提取string2之后的模式。 另外,不要忘记在图案前添加空白: ->\s(\w+) 请参见演示: 您可以使用re.search捕获第一组: print(re.search(r'->\s(\w+)', my_string).group(1)) \b表示边界,而不是空白。要匹配空格,必须使用\s 在这里,表示单词的正则表达式,可选空格“->”,可选空格,单词应该是:\w+\s
NP
:
ROOT -> NP
更一般的string1->string2
我需要在捕获组中提取
string2
之后的模式。另外,不要忘记在图案前添加空白:
->\s(\w+)
请参见演示:
您可以使用
re.search
捕获第一组:
print(re.search(r'->\s(\w+)', my_string).group(1))
\b
表示边界,而不是空白。要匹配空格,必须使用\s
在这里,表示单词的正则表达式,可选空格“->”,可选空格,单词应该是:\w+\s*->\s*\w+
如果只想捕获第二个单词,并添加可选初始空格的设置,可以使用:
m = re.match('\s*\w+\s*->\s*(\w+)', 'ROOT -> NP')
print(m.group(1))
给出
NP
在一般情况下,你能用语言描述一下你期望这个正则表达式做什么吗?要在这里得到NP
,你不需要正则表达式,类似于s[s.find(“->”)+4://code>的东西就可以了。或s.split(“->”[1]
。请参阅。我什么都没有,我正在办理入住手续。更一般的做法是word1->word2
。我需要提取word2
。为什么要使用方括号?我不是正则表达式专家,但看起来正则表达式中的第一个组实际上是匹配“一个字符,它不是括号、空格、星号或任何字符,其代码介于边界和大于符号之间”。第二组只使用空格。所以你只需要一个字符,后跟空格。