gpt4 book ai didi

java - 为什么这个 Java 正则表达式会导致 "illegal escape character"错误?

转载 作者:IT老高 更新时间:2023-10-28 21:13:42 24 4
gpt4 key购买 nike

我正在处理 solution to a previous question ,尽我所能,使用正则表达式。我的模式是

"\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}"

根据 NetBeans,我有两个非法转义字符。我猜它与\d 和\w 有关,但它们在Java 中都是有效的。也许我的 Java 正则表达式语法不可用...

涉及的整行代码是:

userTimestampField = new FormattedTextField(
new RegexFormatter(
"\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}"
));

最佳答案

假设此正则表达式位于 Java String 文字中,您需要为 \d\w 标签转义反斜杠:

"\\d{4}\\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}"

坦率地说,当你想匹配反斜杠时,这会变得更多,嗯,bonkers:

public static void main(String[] args) {        
Pattern p = Pattern.compile("\\\\\\\\"); //ERM, YEP: 8 OF THEM
String s = "\\\\";
Matcher m = p.matcher(s);
System.out.println(s);
System.out.println(m.matches());
}

\\ //JUST TO MATCH TWO SLASHES :(
true

关于java - 为什么这个 Java 正则表达式会导致 "illegal escape character"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379191/

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