?`~!@#$%^&*()_+=]"); 我的程序出了问题。为什么不喜欢这个? 最佳答案 此正则表达式-6ren">
gpt4 book ai didi

Java 模式正则表达式

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

当我尝试时:

Pattern p = Pattern.compile("[,.s;:{}/[]<>?`~!@#$%^&*()_+=]");

我的程序出了问题。为什么不喜欢这个?

最佳答案

此正则表达式无法编译,因为在 Java 中,当您在字符类中使用方括号 [, ] 时,需要转义它们:

Pattern p = Pattern.compile("[,.s;:{}/\\[\\]<>?`~!@#$%^&*()_+=]");
^^^^^^

需要双重转义 \\ ,因为斜杠 \ 在 Java 字符串中用于转义特殊序列,如 \n\r ...等等

现在,当我们需要斜杠用于转义内容时,如何在 Java 字符串中包含斜杠?

我们使用它自身对其进行转义,因此输入两次 \\

为什么我们需要在字符类中转义 []

因为Java supports character class subtraction, intersection and union ,例如:

[a-d[m-p]]  a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]] d, e, or f (intersection)
[a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction)

示例取自文档。

关于Java 模式正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817487/

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