【发布时间】:2012-01-13 01:39:54
【问题描述】:
我正在寻找一个正则表达式来匹配 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+]*',我认为它可以工作,但没有(它返回 ['-three, ''])。即匹配 |word 后跟 hyphen 后跟 word 后跟 hyphen_word 零次或多次 |。
【问题讨论】:
-
我不知道您打算将其用于什么,但您是否考虑过尾随或前缀连字符为valid 的情况,例如“十九世纪和二十世纪”或“投资者-拥有和经营”?
-
您自己的表达式中的主要问题是方括号。他们不会将内容组合在一起,而是创建一个角色类,这是完全不同的东西。
-
感谢您的输入,懒惰者。你指出的情况我已经考虑过了,它们不会造成问题。谢谢你的澄清,stema。我意识到方括号没有对内容进行分组,但它们与我试图做的事情最接近。