2010-06-24 226 views
2

我要匹配這樣的:正則表達式模式

  • 八(8)字母數字字符
  • 其次是 - 連字符
  • 其次是二十二歲(22)字母數字字符,這裏就是我想和它不匹配:

[8]\w+-[22]\w+

+0

的'[]'限定[* *字符類**](http://www.regular-expressions.info/charclass.html)。 – 2010-06-24 11:51:31

回答

5

應該是:

\w{8}-\w{22} 

[8]匹配單個字符 - 字面8,和[22]匹配一個字面2.

注意\w也允許下劃線。如果這是一個問題,使用

[a-zA-Z0-9]{8}-[a-zA-Z0-9]{22} 

一個很好的提示,從蒂姆,如果你想捕捉目標價從文件或字符串的模式,你可能要添加\b - 單詞邊界,以避免部分匹配。例如,如果你想要一個2-4格式12-1234,第一parrent將匹配1234-1234567

\b\w{8}-\w{22}\b 
+1

差不多,除了\ w也匹配下劃線 – unbeli 2010-06-24 11:50:35

+4

+1,我還建議圍繞一切與'\ b'標籤只是爲了確保。 – 2010-06-24 11:50:59

+0

@Tim - 非常好,比我關於'^ .. $'的評論還好。 – Kobi 2010-06-24 11:57:36

1

你想用

\w{8}-\w{22} 

在大多數的正則表達式語言,\ W意志匹配一個字符。

1

正則表達式語法取決於您使用的語言。

[A-ZA-Z0-9] {8} - [A-ZA-Z0-9] {22}

注意\ W匹配下劃線