用于排除匹配的常规解析模式

时间:2015-10-23 07:33:45

标签: python regex

如何只检索NP

ROOT -> NP

更一般string1 -> string2 我需要提取string2

2 个答案:

答案 0 :(得分:2)

在捕获组中->后面的模式 另外,不要忘记在模式之前添加空格:

->\s(\w+)

请参阅演示:https://regex101.com/r/lP0lT3/1

您可以使用re.search捕获第一组:

print(re.search(r'->\s(\w+)', my_string).group(1))

答案 1 :(得分:1)

\b适用于边界,不适用于空白。要匹配空格,您必须使用\s

此处,代表单词,可选空格,' - >',可选空格,单词的正则表达式为:\w+\s*->\s*\w+

如果您只想捕获第二个单词,并为可选的初始空格添加规定,您可以使用:

m = re.match('\s*\w+\s*->\s*(\w+)', 'ROOT -> NP')
print(m.group(1))

给出NP