在 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/