我正在寻找一个正则表达式来将单词与连字符和/或撇号匹配。到目前为止,我已经:
(\w+([-'])(\w+)?[']?(\w+))这在大多数情况下都有效,但是如果有撇号,然后是连字符,比如“qu ce”,它就不匹配了。我可以附加更多的选项,虽然也许还有更有效的方法?
一些我想要匹配的例子:玛丽的,高中的,‘它,钱伯斯’,曲特西。
发布于 2015-08-10 03:09:03
使用此模式
(?=\S*['-])([a-zA-Z'-]+)(?= # Look-Ahead
\S # <not a whitespace character>
* # (zero or more)(greedy)
['-] # Character in ['-] Character Class
) # End of Look-Ahead
( # Capturing Group (1)
[a-zA-Z'-] # Character in [a-zA-Z'-] Character Class
+ # (one or more)(greedy)
) # End of Capturing Group (1)发布于 2015-08-10 03:26:26
[\w'-]+可以匹配几乎所有带有(或没有)连字符和撇号的单词,但在这些字符相邻的情况下也是如此。(?:\w|['-]\w)+应该匹配字符不能相邻的情况。
如果您需要确保单词包含连字符和/或撇号,并且这些字符不相邻,可以试试\w*(?:['-](?!['-])\w*)+。但这也与“独处”相匹配。
发布于 2015-08-10 02:54:14
\b\w*[-']\w*\b应该能做到
https://stackoverflow.com/questions/31910955
复制相似问题