如何编写一个正则表达式来匹配两个特定字符之间的任何内容?
喜欢:
忽略我[take:me]忽略我
?
如何匹配包容性[take:me]
?
单词 take:me
是动态的,因此我还想匹配 [123as d:.-,§""§%]
最佳答案
您可以使用此正则表达式:
“\\[(.*?)\\]”
这个link应该可以帮助您理解它为何有效。
Pattern pattern = Pattern.compile("\\[(.*?)\\]");
Matcher matcher = pattern.matcher("ignore me [take:me] ignore me");
if (matcher.find()) {
System.out.println(matcher.group(1));
}
这将打印 take:me
。
如果你想匹配 &([take:me])
你应该使用这个:
&\\(\\[(.*?)\\]\\)
并不是说您应该转义正则表达式中具有特殊含义的字符。 (如 (
和 )
)。
通过添加反斜杠来转义它们,但由于 Java 中的反斜杠写为 \\
,因此您可以在任何具有特殊含义的字符之前添加 \\
。因此,通过执行 \\(
,您可以告诉 Java:
“将 (
作为常规字符,而不是特殊字符”。
关于java - 如何匹配两个字符之间的任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273143/