2011-10-18 44 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((,.*)|$)