Как я могу получить только NP
:Обычного шаблон синтаксического анализа для исключения матча
ROOT -> NP
Более общие string1 -> string2
Мне нужно извлечь string2
Как я могу получить только NP
:Обычного шаблон синтаксического анализа для исключения матча
ROOT -> NP
Более общие string1 -> string2
Мне нужно извлечь string2
Просто из рисунка после ->
в захвате группы.
Также не забыл добавить белое пространство перед вашей схеме:
->\s(\w+)
Престола демо: https://regex101.com/r/lP0lT3/1
Вы можете использовать re.search
захватить первую группу:
print(re.search(r'->\s(\w+)', my_string).group(1))
\b
предназначенный для границей, не для blank. Чтобы сопоставить пробелы, вы должны использовать \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:] 'будет делать. Или 's.split (" -> ") [1]'. См. [Demo] (https://ideone.com/gmHncw). –
Я ничего не получаю, я проверяю http://regexpal.com/. – aman