java - 在JAVA中使用这个正则表达式有什么问题?

标签 java regex

在 JAVA 代码中使用以下正则表达式有什么问题:

    "(\\s[(]((\\w)*(\\s)*)*[)])"

这是替换字符串中的模式,例如“(foo bar foo bar)”。 谢谢。

最佳答案

首先,测试正则表达式的最佳方法是使用 Regex Tester

其次,获取 Regex Cheat Sheet 的副本会很有帮助。

关于你的问题,因为括号在正则表达式中是保留字符,所以你需要使用\转义这些字符,但在Java中,因为\是一个特殊字符,你必须转义两次 - 例如

\\(.*\\)

这将匹配两个括号之间的任何内容。

要将其限制为仅匹配单词字符和空格,您可以使用:

\\((?:[\\w]|[\\s])*\\)

解释一下这里发生了什么:

  • (.)* 指示匹配与括号中的正则表达式匹配的任意数量的字符
  • (?:.)* 由于括号意味着我们正在分组,因此我们添加 ?: 表示我们对组的内容不感兴趣<
  • [\\w]|[\\s] 指示匹配单词字符或空白字符

关于java - 在JAVA中使用这个正则表达式有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10743963/

相关文章:

javascript - Javascript Regex - 查找脚本中是否仅存在允许的字符

java - Apache Cayenne - 我找不到定义 Token.kind 字段常量的代码

java - 如何自动将版本信息嵌入到我的 Java 应用程序中?

java - 用 Java 或 Javascript 播放 BIOS 声音(通过 PC 扬声器)

regex - 任何人都可以解释 "sed-regex here"中发生了什么

regex - 使用非法字符启用Elasticsearch索引名称

java - 如何将复选框添加到警报对话框?

java - JSONObject 在使用字符串实例化后返回非空值 "null"

JavaScript 正则表达式替换整个单词

php - 带有 ": "的友好 URL