【发布时间】:2019-08-25 01:17:03
【问题描述】:
我为此尝试谷歌,但尚未找到解决方案。
假设我以字符串 "aaabbccd" 开头。然后我通过添加一些特殊字符来修改它:
"aa[ab]bccd""aa[a[b]bc]cd"-
"[aa[a[b]bc]cd]"
当我修改字符串时,我想对其进行正则表达式匹配,而不使用字符 [ 和 ]。例子:
对于输入字符串
String s = "aa[ab]bccd"
s.matches(<my_regex_here>) // trying to match "bbc" should return true
s = "aa[a[b]bc]cd";
s.matches(<my_regex_here>) // trying to match for "abb" should return true
我尝试使用负前瞻,但如果我的理解是正确的,那么只有当我知道要排除的字符的确切位置时它才会起作用。有什么建议吗?
【问题讨论】:
-
b[\[\]]*b[\[\]]*c不工作吗? -
代码中的 cmets 造成的混乱多于帮助。为什么要匹配第一个中的“bbc”?或者为什么第二个是“abb”?
-
我想我不清楚。我想说的是我不会提前知道
[和]的位置,它们会在运行时发生变化。如果您从字符串中删除所有出现的[和],bbc应该返回 true,对于后者也是如此。 -
那我就用一个简单的
s.replaceAll("[\\[\\]]", "").contains("abb")而不用太多正则表达式。