Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于排除匹配项的常规分析模式_Python_Regex - Fatal编程技术网

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
。为什么要使用方括号?我不是正则表达式专家,但看起来正则表达式中的第一个组实际上是匹配“一个字符,它不是括号、空格、星号或任何字符,其代码介于边界和大于符号之间”。第二组只使用空格。所以你只需要一个字符,后跟空格。