gpt4 book ai didi

java - 需要正则表达式帮助,因使用反斜杠而受到打击

转载 作者:行者123 更新时间:2023-12-01 17:14:09 26 4
gpt4 key购买 nike

我正在尝试创建一个 Java 正则表达式,如果字符串末尾有奇数个反斜杠(),它将返回 true,如果是偶数,则返回 false。

这是我的正则表达式

    String regex = "^.*[^\\](\\\\)*\\$";
Pattern pattern = Pattern.compile(regex);

当我编译代码时出现以下异常

线程“main”中出现异常 java.util.regex.PatternSyntaxException:索引 15 附近未封闭的字符类^.([^])(\)\$

如果我使用 M 模式编译并工作正常,则代替反斜杠

    String regex = "^.*" + "[^M]" + "(MM)*M$";

我知道这是一种逃避问题,但我无法弄清楚。以下是整个方法

    private static void testSpecificRegex() {
String a = "india\\";
String b = "india\\\\";
String c = "india\\\\\\";
String d = "india\\\\\\\\";

/* String a = "indiaM";
String b = "indiaMM";
String c = "indiaMMM";
String d = "indiaMMMM";*/

String regex = "^.*[^\\](\\\\)*\\$";
//String regex = "^.*" + "[^M]" + "(MM)*M$";
System.err.println(regex);
Pattern pattern = Pattern.compile(regex); // why i need to compile
Matcher matcher = pattern.matcher(a);
System.err.println(matcher.matches());
matcher = pattern.matcher(b);
System.err.println(matcher.matches());
matcher = pattern.matcher(c);
System.err.println(matcher.matches());
matcher = pattern.matcher(d);
System.err.println(matcher.matches());
}

最佳答案

这个有效“^.*[^\\\\](\\\\\\\\)*\\\\$”。您只是忘记了一些反斜杠。
您可以使用this site测试你的正则表达式。
哦,你应该检查this确保 ^$ 运算符按您的想法工作。
来自链接:

By default these expressions only match at the beginning and the end of the entire input sequence

所以如果你想匹配行的开头和结尾,你应该在正则表达式的开头添加“(?m)”

关于java - 需要正则表达式帮助,因使用反斜杠而受到打击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813510/

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