我正在寻找一个能够匹配Python中连字符单词的正则表达式。
我最接近的尝试是:'\w+-\w+[-w+]*'
text = "one-hundered-and-three- some text foo-bar some--text"
hyphenated = re.findall(r'\w+-\w+[-\w+]*',text)
该函数返回列表['one-hundered-and-three-', 'foo-bar']
。
这个函数几乎完美,除了在'three'
后面有一个多余的连字符。我只想要在'word'后面跟着一个额外的连字符。即,我需要像'(-\w+)*'
这样的东西,而不是'[-\w+]\*'
。我曾经以为它会起作用,但事实并非如此(它返回['-three, '']
)。也就是说,我需要一个匹配|单词或连字符后跟一个单词后跟连字符和单词零次或多次|的正则表达式。