我知道这个问题似乎已经被问过了,但是我试着用其他的答案来搜索我的例子,但是由于某些原因,我似乎无法让它起作用。你知道吗
我有文本:
['root(ROOT-0, love-2) s1', 'amod(perve-5, good-4) s2',
'advmod(love-2, thanks-12) s3', 'amod(mags-16, glossy-15) s4']
我只希望文本在amod之间(直到-。 例如,我想要:
'perve' and 'mags'
我试过:
words = re.findall('\((.*?)\-', v)
但它的回报是:
['ROOT', 'perve', 'love', 'mags']
如有任何建议,将不胜感激。你知道吗
当我想在两个已知的子字符串之间找到一个任意的子字符串时,我通常依赖于lookahead和lookahead断言的组合。你知道吗
注意,由于lookbehind断言
(?=-)
,您必须使用[^-]
(除minus之外的所有内容)。如果lookback(-)也在greedy匹配中(+),则不能使用greedy.+
然后期望regex在lookback停止匹配希望这是你想要的。你知道吗
这似乎像regex一样起到了作用:
(?<=amod\().+?(?=-)
Regex demo
您可以使用:
RegEx Demo
正则表达式详细信息:
amod
:匹配文本amid(
([^-]*)
:匹配0个或多个非-
的字符并将其捕获到组#1中-
:匹配文本-
相关问题 更多 >
编程相关推荐