Python 有没有一种方法可以使用正则表达式来查找两个字符串之间的子字符串?

Python 有没有一种方法可以使用正则表达式来查找两个字符串之间的子字符串?,python,regex,Python,Regex,我知道这个问题似乎已经被问过了,但我已经尝试搜索并使用其他答案作为我的例子,但出于某种原因,我似乎无法让它工作 我有以下案文: ['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

我知道这个问题似乎已经被问过了,但我已经尝试搜索并使用其他答案作为我的例子,但出于某种原因,我似乎无法让它工作

我有以下案文:

    ['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']
如有任何建议,我们将不胜感激。

您可以使用:

>>> test_str = ("    ['root(ROOT-0, love-2) s1', 'amod(perve-5, good-4) s2',\n"
...     "    'advmod(love-2, thanks-12) s3', 'amod(mags-16, glossy-15) s4']")
>>>
>>> print ( re.findall(r"amod\(([^-]*)-", test_str) )
['perve', 'mags']

正则表达式详细信息:

  • amod
    :在中间(
  • ([^-]*)
    :匹配0个或更多非
    -
    的字符,并将其捕获到组#1中
  • -
    :匹配文字
    -
您可以使用:

>>> test_str = ("    ['root(ROOT-0, love-2) s1', 'amod(perve-5, good-4) s2',\n"
...     "    'advmod(love-2, thanks-12) s3', 'amod(mags-16, glossy-15) s4']")
>>>
>>> print ( re.findall(r"amod\(([^-]*)-", test_str) )
['perve', 'mags']

正则表达式详细信息:

  • amod
    :在中间(
  • ([^-]*)
    :匹配0个或更多非
    -
    的字符,并将其捕获到组#1中
  • -
    :匹配文字
    -

这似乎像正则表达式一样起到了作用:


(?这似乎与正则表达式一样:


(?当我想在两个已知的子字符串之间找到任意的子字符串时,我通常依赖于前向和后向断言的组合

列表中字符串的

match=re.search(r’(?当我想在两个已知的子字符串之间找到任意的子字符串时,我通常依赖于前向和后向断言的组合

列表中字符串的

match=re.search(r'(?您可以使用;
r'amod\([^-]*)-”
如果
amod
总是在那里,并且您在后面查找文本,那么在您的正则表达式模式中包括文本
'amod'
。您可以使用;
r'amod\([^-]*)-“
如果
amod
总是在那里,并且您正在查找后面的文本,那么请将文本
'amod'
包含在您的正则表达式模式中。非常感谢。这帮助我了解了如何使用r匹配文本。非常感谢。这帮助我了解了如何使用r匹配文本。