gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:38:10 27 4
gpt4 key购买 nike

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

String lang = "lang=\"" + L.detectLang(inputText) +"\"";
shovel.replaceFirst("lang=\"[..]\"", lang);

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

换句话说,如何在正则表达式中包含 ""lang=\\"[..]\\"" 不起作用。我还尝试了三个斜杠,但也没有任何匹配。

我还知道不使用正则表达式来解析 XML/HTML 的一般规则。 (并且 shovel 是一个 XML)但是,我所做的就是查找 XML 前 30 个字符内的 lang 属性,并且我想要代替它。在这种情况下使用正则表达式真的是一个坏主意吗?我不认为使用 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,在正则表达式中转义(使用)引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com