用于连字符的Python Regex

时间:2011-12-05 09:28:47

标签: python regex hyphen

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

这几乎是完美的,除了'三'之后的尾随连字符。我只想要附加连字符,如果后面跟着'单词'。即,而不是'[ - \ w +] *',我需要像'( - \ w +)*'这样的东西,我觉得它会起作用,但不会(它返回[' - 三,''])。即匹配|后跟连字符后跟单词后跟hyphen_word零​​次或多次|。

1 个答案:

答案 0 :(得分:20)

试试这个:

re.findall(r'\w+(?:-\w+)+',text)

这里我们考虑一个带连字符的词:

  • 一些单词字符
  • 后跟任意数量的:
    • 一个连字符
    • 后跟单词字符