用于带连字符的单词的 Python 正则表达式

标签 python regex hyphenation

我正在寻找一个正则表达式来匹配 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/

相关文章:

CSS 连字符未出现在 Firefox 52 中的换行词中

php - 不要拆分带连字符的单词

python - 如何按降序排列我的链接(我有链接的值,(num_to_words(v)))

Python __imul__() 方法

regex - 正则表达式提取字符串

regex - vim 正则表达式将所有数字加 1

Python包?

python - Django.db 导入错误

c++ - 为什么正则表达式析构函数中存在存储错误?

未应用 CSS3 连字符