java - 在 Java 中使用变量创建正则表达式

标签 java regex string replace

我对正则表达式有点陌生。我正在尝试用 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/

相关文章:

python - 在 Python 中并排连接列表中的单词

java - 由于数据提供者配置不正确而跳过测试

java - "precise rethrow with a final exception"在 Java SE 8 中工作吗?

python - 替换Python文件中一行中的单词

c# - 如何在 Java 中获取 Group.Captures(来自 C# 中的 RegEx)的行为?

python - 如何在读取文件时跳行(原为 :How to index through a file? )

java - 从数字签名中获取公钥

java - 如何在透明 JPanel 上添加 JComboBox?

regex - 如何编写正则表达式以从 URL 中删除最后一个参数

MySQL 字符串函数