Java 如何排除某些字符进行正则表达式匹配?
我试图用谷歌搜索这个问题,但还没有找到解决办法 假设我以字符串“aaabbcd”开头。然后,我通过添加一些特殊字符对其进行修改,如下所示:Java 如何排除某些字符进行正则表达式匹配?,java,regex,Java,Regex,我试图用谷歌搜索这个问题,但还没有找到解决办法 假设我以字符串“aaabbcd”开头。然后,我通过添加一些特殊字符对其进行修改,如下所示: “aa[ab]bccd” “aa[a[b]bc]cd” “[aa[a[b]bc]cd]” 当我修改字符串时,我想在不使用字符[和]的情况下对其进行正则表达式匹配。例子: 用于输入字符串 String s=“aa[ab]bccd” s、 matches()//尝试匹配“bbc”应返回true s=“aa[a[b]bc]cd”; s、 matches()//
“aa[ab]bccd”
“aa[a[b]bc]cd”
“[aa[a[b]bc]cd]”
[
和]
的情况下对其进行正则表达式匹配。例子:
用于输入字符串
String s=“aa[ab]bccd”
s、 matches()//尝试匹配“bbc”应返回true
s=“aa[a[b]bc]cd”;
s、 matches()//尝试匹配“abb”应返回true
我尝试过使用负前瞻,但如果我的理解是正确的,那么只有当我知道要排除的字符的确切位置时,它才会起作用。有什么建议吗?可以这样
s.replaceAll("\\[", "")
.replaceAll("\\]", "")
.matches(<my_regex_here>)
s.replaceAll(“\\[”,“”)
.replaceAll(“\\]”,“”)
.matches()
b[\[\]]*b[\[\]*c
行得通吗?你在代码中的注释会带来更多的混乱,而不是帮助。为什么要在第一场比赛中与“bbc”相匹敌?或者为什么在第二个字母中用“abb”呢?我想我不清楚。我想说的是,我不会提前知道[
和]
的位置,它们在运行时会发生变化<如果从字符串中删除所有出现的[
和]
,则bbc
应该返回true,对于后者也是如此。然后我只使用一个简单的s.replaceAll(“[\\[\]]”,“”)。包含(“abb”)
,而不会对regex造成太大的干扰。