2011-10-18 70 views
8

我需要一個模式(java正則表達式),如果在鍵或鍵在行尾之後有逗號,則匹配模式(java正則表達式)。即它應該同時匹配以下的:符號或行結尾的模式

1. xxxkey,yyy 
2. xxxkey 

我用盡[\\,$]模式,但它不能正常工作。

回答

11

$在一個字符類裏面失去了它的特殊含義。使用以下代替:

key(,|$) 

如果你不需要知道是否有一個逗號,你可以改用非捕獲組:

key(?:,|$) 
+0

你會如何使用字符類中的特殊含義轉義字符? – Oliver

+0

謝謝!!!!!! )) – shift66

+0

@Oliver:這不僅僅是逃避'$'的問題。既然它是一個錨,而不是一個角色,我不認爲你可以放入一個角色類*,而不會失去它的特殊含義。在任何情況下,請參閱http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html以獲取Java正則表達式語法。 – NPE

1

嘗試......

"xxxkey(?:,\\w*)?$" 

或 -

"xxxkey(?:,.*)?$" 

或 -

"xxxkey(?:,|$)" 

根據您的需求

0

,是一個字符,但$是特殊的,它不是一個字符。

嘗試,?這意味着一個逗號或沒有逗號,並跟隨$

1

這裏就是你需要的東西:

.*key((,.*)|$)