2012-04-24 38 views
1

我有三個不同的東西正則表達式這種特殊的模式

xxx 
xxx>xxx 
xxx>xxx>xxx 

其中xxx可以是字母和數字

任意組合,我需要一個正則表達式可以匹配前兩個,但不是第三。

+0

這三個不同的「事物」是所有在字符串中存在的,還是你試圖找到一個更大的字符串? – 2012-04-24 14:50:16

+0

你只想匹配'xxx's還是'>'?換句話說,你是否試圖提取'xxx's? – alan 2012-04-24 14:54:59

+0

這個問題與這一個不同:http://stackoverflow.com/questions/8854363/regexp-for-specific-matching-of-character-string ...除了你想匹配的字符數量。 – alan 2012-04-24 15:13:00

回答

5

要匹配ASCII字母和數字請嘗試以下操作:

^[a-zA-Z0-9]{3}(>[a-zA-Z0-9]{3})?$ 

如果需要ASCII字符集以外的字母和數字,然後下面應該足夠了:

^[^\W_]{3}(>[^\W_]{3})?$ 
+0

請注意,此模式假定該字符串佔據整行。否則,省略'^'和/或'$',但是如果在第二個字母組之後不得不排除可能的'>'。 – ysap 2012-04-24 14:53:01

+0

這隻能匹配ASCII字母和數字。 – 2012-04-24 15:02:24

+0

@TimPietzcker好點,回答更新。 – 2012-04-25 08:48:26

1
^\w+(?:>\w+)?$ 

比賽整個字符串。

\w+(?:>\w+)?\b(?!>) 

在較大的子字符串中匹配這樣的字符串。

如果你想排除匹配下劃線,你可以使用[\p{L]\p{N}]代替(如果你的正則表達式引擎知道的Unicode),或[^\W_]如果沒有,爲\w的替代品。

+0

\ w除[A-Za-z0-9]外還匹配_。 – djechlin 2012-04-24 14:52:05

+0

這將不匹配第一個條目。 – 2012-04-24 14:52:38

+0

@ gms8994:對,謝謝。我忽略了這一點。 – 2012-04-24 14:55:51