正则表达式类[。]与'('')'或'$'不匹配

时间:2012-04-12 08:03:51

标签: java android regex expression

我有一个简单的正则表达式:

String expr = "#^" + STARTER + "[.]" + ENDER + "$#";
c = c.replaceAll(expr, STARTER + REPLACEMENT + ENDER);

结果:

包含

的字符串
STARTER an exemple ENDER 

匹配但是:

STARTER an (exemple) ENDER

不匹配。

为什么字符)($被排除在.正则表达式类之外? 如何让它接受任何角色?

2 个答案:

答案 0 :(得分:2)

.(点)不是正则表达式类,它是一个特殊符号,仅在[]之外具有特殊含义。

点接受任何字符(可能\n除外)没有[]

答案 1 :(得分:2)

假设STARTERENDER应该是文字字符串,而不是正则表达式,并且您的目标是匹配以STARTER开头的字符串,以{{1结尾并且可以包含中间的任何内容(除了换行符),您可以使用

ENDER

这意味着每个字符串只能有一个匹配。

因此,如果String expr = "^" + Pattern.quote(STARTER) + ".*" + Pattern.quote(ENDER) + "$"; STARTER == "Start"ENDER == "End"REPLACEMENT == "Replace"调用会执行以下操作:

replaceAll()

由于这没有多大意义,您可能想解释一下这个正则表达式的实际目标是什么。