我对正则表达式有点陌生。我正在尝试用 Java 创建一个正则表达式,其中包含一个变量。
我想匹配“var”、“(var)”、“[var]”或“{var}”以及变量 var 的任何大小写变体。
我已经尝试过了,似乎有一个异常(exception):
java.util.regex.PatternSyntaxException:索引 20 附近未封闭的字符类
有人对如何解决和改进这个问题有任何建议吗?
String s = "[Tom] The rest of the title";
String v = "Tom";
s = s.replaceAll("(?i)[({/[]*" + v + "[)}\]]*", "");
System.out.println(s);
最佳答案
尝试:
String s = "[Tom] The rest of the title";
String v = "Tom";
String myRegexp = String.format("(?i)\\[%s\\]|\\{%s\\}|\\(%s\\)|%s", v,v,v,v);
System.out.println(myRegexp);
s = s.replaceAll(myRegexp, "");
System.out.println(s);
这一行:
String myRegexp = String.format("(?i)\\[%s\\]|\\{%s\\}|\\(%s\\)|%s", v,v,v,v);
构建一个简单的正则表达式:
(?i)\[汤姆\]|\{汤姆\}|\(汤姆\)|汤姆
所有大括号:{}[]()
都是正则表达式中的特殊字符,必须使用 \
字符进行转义(在 Java 字符串中必须是 \\
)。
关于java - 在 Java 中使用变量创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847936/