相关疑难解决方法(0)

转义Java正则表达式中的特殊字符

在Java或任何开源库中是否有任何方法可以转义(不引用)特殊字符(元字符),以便将其用作正则表达式?

这在动态构建正则表达式时非常方便,无需手动转义每个单独的字符.

例如,考虑一个简单的正则表达式\d+\.\d+,它匹配带小数点的数字1.2,以及以下代码:

String digit = "d";
String point = ".";
String regex1 = "\\d+\\.\\d+";
String regex2 = Pattern.quote(digit + "+" + point + digit + "+");

Pattern numbers1 = Pattern.compile(regex1);
Pattern numbers2 = Pattern.compile(regex2);

System.out.println("Regex 1: " + regex1);

if (numbers1.matcher("1.2").matches()) {
    System.out.println("\tMatch");
} else {
    System.out.println("\tNo match");
}

System.out.println("Regex 2: " + regex2);

if (numbers2.matcher("1.2").matches()) {
    System.out.println("\tMatch");
} else {
    System.out.println("\tNo match");
}
Run Code Online (Sandbox Code Playgroud)

毫不奇怪,上面代码产生的输出是:

Regex 1: \d+\.\d+
    Match
Regex 2: \Qd+.d+\E
    No match
Run Code Online (Sandbox Code Playgroud)

也就是说, …

java regex escaping

23
推荐指数
4
解决办法
10万
查看次数

如何在正则表达式中表示双引号字符(")?

我需要使用正则表达式,检查一个字符串以a开头的双引号字符("),并用结束双引号太多字符.

问题是我不能使用双引号字符,因为它会混淆.有没有其他方法来表示正则表达式中的双引号字符",或者一般表示字符串?

String s = """;    // ?
Run Code Online (Sandbox Code Playgroud)

java regex char

11
推荐指数
2
解决办法
9万
查看次数

标签 统计

java ×2

regex ×2

char ×1

escaping ×1