1

i need a regex that allow words which have no hyphen inside them. For example, in a string " non-word sentence " it should only match "sentence". I wrote:

 "\b(?!\w+[-]\w+)\w+" 

and it fails:

It matches not only "sentence" but also "word".

How to make it ignore words with hyphens inside?

4

2 回答 2

3

好的,这是 PCRE(Perl 兼容的正则表达式系统,这意味着它们中的大多数):

(?<![-])\b[a-zA-Z]+\b(?![-])

让我为你分解一下:

(?<![-]): Negative look-behind -- “下一个匹配的东西,看看它前面的东西。如果是连字符,忽略这个匹配”

\b[a-zA-Z]+\b:一个词的边界,一个词,一个词的边界。我们的“东西”。

(?![-]):否定的前瞻——“匹配的东西,看看它后面的东西。如果是连字符,忽略这个匹配”

这是我最喜欢的在线正则表达式测试器 RegExr。

于 2013-07-10T20:33:22.483 回答
0

这对你有用吗:

(?<=[^\s])[a-zA-Z]*(?=[$\s])
于 2013-07-10T20:24:17.403 回答