Java,在正则表达式中转义(使用)引号

我试图在Java中使用以下正则表达式,应该匹配任何正则表达式lang="2-char-lang-name"

String lang = "lang=\"" + L.detectLang(inputText) +"\"";

shovel.replaceFirst("lang=\"[..]\"", lang);

我知道正则表达式会将单个斜杠解释为斜杠,而不是转义字符(因此我的代码不起作用),但是如果我转义了斜杠,"将不会再转义并且我会得到一个语法错误。

换句话说,如何"在正则表达式中包含a ?"lang=\\"[..]\\""将无法正常工作。我也尝试过三个斜杠,但也没有任何匹配。

我也知道您不使用regex解析XML /

HTML的一般规则。(并且shovel是XML)但是,我要做的就是查找langXML的前30个字符以内的属性,并且我想替换它。在这种情况下使用正则表达式真的不是一个好主意吗?我认为使用DOM不会更好/更有效。

回答:

三个斜杠是正确的(\\+ \"变为\+ "= \")。(

:实际上,事实证明这甚至没有必要。似乎也可以使用单个斜杠。)问题是您对[..]; 的使用。这些[]符号表示“此处的[..]任何字符”

(因此仅表示“任何字符”)。

删除[],您应该会得到想要的:

String ab = "foo=\"bar\" lang=\"AB\"";

String regex = "lang=\\\"..\\\"";

String cd = ab.replaceFirst(regex, "lang=\"CD\"");

System.out.println(cd);

输出:

foo="bar" lang="CD"

以上是 Java,在正则表达式中转义(使用)引号 的全部内容, 来源链接: utcz.com/qa/412818.html

回到顶部