鉴于以下正则表达式:正则表达式匹配的双连字符的字符串
^((?:\d+\s)?\w+(?:\s\w+)?)
其工作良好,以提取所述第一(最多)2个字(带有数字前缀,如果存在的话),我怎样才能适应它包括连字符的单词?
我试着在第一个w+
之后加入\-
,但是只找到了连字符的前半部分并且破坏了原始功能。
有效匹配的一些例子:
- 1两
- 3四五
- 六七八
- 九岁十
他们是一个地址的组成部分因此,我想,也可能在某个地方有一个撇号,我怎么也检查这个?
鉴于以下正则表达式:正则表达式匹配的双连字符的字符串
^((?:\d+\s)?\w+(?:\s\w+)?)
其工作良好,以提取所述第一(最多)2个字(带有数字前缀,如果存在的话),我怎样才能适应它包括连字符的单词?
我试着在第一个w+
之后加入\-
,但是只找到了连字符的前半部分并且破坏了原始功能。
有效匹配的一些例子:
他们是一个地址的组成部分因此,我想,也可能在某个地方有一个撇号,我怎么也检查这个?
使用[\s\-]
,而不是\s
[\s\-]
要么匹配space
或-
..
所以应该
^((?:\d+[\s\-])?\w+(?:[\s\-]\w+)?)
上述正则表达式不会为您的有效matches..you工作应该使用下面给出的正则表达式
一种更好的方式,以匹配-
或空间分隔的将是
^\w+([\s\-]\w+){0,2}$
多的话,我不认为你需要逃脱'-'的'[]'之外。 – 2012-11-14 14:38:58
Try \ - *因为如果你忽略了这个量词,你只能匹配带连字符的单词 –