Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何排除某些字符进行正则表达式匹配?_Java_Regex - Fatal编程技术网

Java 如何排除某些字符进行正则表达式匹配?

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()//

我试图用谷歌搜索这个问题,但还没有找到解决办法

假设我以字符串“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()//尝试匹配“abb”应返回true
我尝试过使用负前瞻,但如果我的理解是正确的,那么只有当我知道要排除的字符的确切位置时,它才会起作用。有什么建议吗?

可以这样

s.replaceAll("\\[", "")
                .replaceAll("\\]", "")
                .matches(<my_regex_here>)
s.replaceAll(“\\[”,“”)
.replaceAll(“\\]”,“”)
.matches()

b[\[\]]*b[\[\]*c
行得通吗?你在代码中的注释会带来更多的混乱,而不是帮助。为什么要在第一场比赛中与“bbc”相匹敌?或者为什么在第二个字母中用“abb”呢?我想我不清楚。我想说的是,我不会提前知道
[
]
的位置,它们在运行时会发生变化<如果从字符串中删除所有出现的
[
]
,则bbc
应该返回true,对于后者也是如此。然后我只使用一个简单的
s.replaceAll(“[\\[\]]”,“”)。包含(“abb”)
,而不会对regex造成太大的干扰。