在正则表达式中排除某个双字符

时间:2013-06-12 19:53:39

标签: regex

我无法将头部缠绕在一个正则表达式上。

到目前为止,我的模式看起来像这样(Python Verbose flavor regex)

(?P<text>
 [a-zA-Z0-9]+        # can start with "core char"
 [a-zA-Z0-9\ \-]*     # can have a "core char" or space|dash within it
 [a-zA-Z0-9]+        # must end with a "core character"
)

我想在中间部分改变这个,我不匹配有重复的空格或破折号。在文本中有多个空格/破折号是可以接受的。

好:

hello world
hello-world
h-ll-w-rld

坏:

-hello-world
hello--world
h-ll--w-rld
hello  world

2 个答案:

答案 0 :(得分:6)

试试这个:

(?P<text>
 [a-zA-Z0-9]+
 ([ -][a-zA-Z0-9]+)*
)

答案 1 :(得分:2)

您可以使用以下内容:

^([a-zA-Z0-9]+[\ \-]?)*[a-zA-Z0-9]+$

http://rubular.com/r/VGfGTrqayR


如果您总是希望有2个或更多单词,那么请使用以下内容

^([a-zA-Z0-9]+[\ \-])+[a-zA-Z0-9]+$

http://rubular.com/r/EdV3iBQbsw