Regex 用连字符和撇号匹配单词
我有以下匹配单词的正则表达式:Regex 用连字符和撇号匹配单词,regex,Regex,我有以下匹配单词的正则表达式: \w+(?:'|\-\w+)? 对于以下字符串: ' 's yea' don't -yeah no- ice-cream ' 它提供以下匹配项: s是的不要是的不冰淇淋 但是,我想要以下匹配项: 的是的不要是的不冰淇淋 因为单词可以以撇号开头或结尾,但不能以连字符结尾。注:a'本身不应匹配 您的\w+(?:'\-\w+)开始与一个单词字符\w匹配,因此所有以'开头的“单词”都不符合要求 您可以将\w和'包含到字符类中并使用 '?\w[\w']*(?:-\w+)
\w+(?:'|\-\w+)?
对于以下字符串:
' 's yea' don't -yeah no- ice-cream '
它提供以下匹配项:
s
是的
不要
是的
不
冰淇淋
但是,我想要以下匹配项:
的
是的
不要
是的
不
冰淇淋
因为单词可以以撇号开头或结尾,但不能以连字符结尾。注:a'本身不应匹配 您的\w+(?:'\-\w+)
开始与一个单词字符\w
匹配,因此所有以'
开头的“单词”都不符合要求
您可以将\w
和'
包含到字符类中并使用
'?\w[\w']*(?:-\w+)*'?
见
如果一个“单词”只能有一个连字符,请将末尾的*
替换为?
量词
细分:
-可选撇号?
-单词字符\w
-0+单词字符或撇号[\w']*
-0+序列:(?:-\w+)*
-连字符-
-1+字字符\w+
-可选撇号?