Java,在正则表达式中转义(使用)引号
我试图在Java中使用以下正则表达式,应该匹配任何正则表达式lang="2-char-lang-name"
:
String lang = "lang=\"" + L.detectLang(inputText) +"\"";shovel.replaceFirst("lang=\"[..]\"", lang);
我知道正则表达式会将单个斜杠解释为斜杠,而不是转义字符(因此我的代码不起作用),但是如果我转义了斜杠,"
将不会再转义并且我会得到一个语法错误。
换句话说,如何"
在正则表达式中包含a ?"lang=\\"[..]\\""
将无法正常工作。我也尝试过三个斜杠,但也没有任何匹配。
我也知道您不使用regex解析XML /
HTML的一般规则。(并且shovel
是XML)但是,我要做的就是查找lang
XML的前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