鑑於以下正則表達式:正則表達式匹配的雙連字符的字符串
^((?:\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 \ - *因爲如果你忽略了這個量詞,你只能匹配帶連字符的單詞 –