我正在寻找一个正则表达式来匹配 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-three-', 'foo-bar']
。
这几乎是完美的,除了 'three'
后面的连字符。如果后跟 'word'
,我只需要额外的连字符。即代替 '[-\w+]\*'
我需要像 '(-\w+)*'
这样的东西,我认为它可以工作,但没有(它返回 ['-three, '']
)。即匹配 |word
后跟连字符后跟 word 后跟 hyphen_word 零次或多次|。
最佳答案
试试这个:
re.findall(r'\w+(?:-\w+)+',text)
这里我们认为带连字符的词是:
- 一些单词字符
- 后跟任意数量的:
- 一个连字符
- 后跟单词字符
关于用于带连字符的单词的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383213/