我有一个简单的正则表达式:
String expr = "#^" + STARTER + "[.]" + ENDER + "$#";
c = c.replaceAll(expr, STARTER + REPLACEMENT + ENDER);
结果:
包含
的字符串STARTER an exemple ENDER
匹配但是:
STARTER an (exemple) ENDER
不匹配。
为什么字符)
,(
和$
被排除在.
正则表达式类之外?
如何让它接受任何角色?
答案 0 :(得分:2)
.
(点)不是正则表达式类,它是一个特殊符号,仅在[]
之外具有特殊含义。
点接受任何字符(可能\n
除外)没有[]
。
答案 1 :(得分:2)
假设STARTER
和ENDER
应该是文字字符串,而不是正则表达式,并且您的目标是匹配以STARTER
开头的字符串,以{{1结尾并且可以包含中间的任何内容(除了换行符),您可以使用
ENDER
这意味着每个字符串只能有一个匹配。
因此,如果String expr = "^" + Pattern.quote(STARTER) + ".*" + Pattern.quote(ENDER) + "$";
,STARTER == "Start"
和ENDER == "End"
,REPLACEMENT == "Replace"
调用会执行以下操作:
replaceAll()
由于这没有多大意义,您可能想解释一下这个正则表达式的实际目标是什么。