java - 如何匹配两个字符之间的任何内容?

标签 java regex

如何编写一个正则表达式来匹配两个特定字符之间的任何内容?

喜欢:

忽略我[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/

相关文章:

javascript - 使用正则表达式在数字周围添加大括号?

php - preg_replace : how do I strip off all white space and &nbsp;?

javascript - 正则表达式匹配所有符号但单词除外

java - 为什么在构造函数上创建新线程是不好的做法?

java - 在 ProGuard for Android 中禁用主动重载

java - 将复选框与服务结合使用

regex - grep 如何匹配一些字母或行尾

java - 如何删除gradle嵌套的依赖项(子项和兄弟项相同)

java - 如何知道 Actor 是否空闲

php - 正则表达式仅适用于 URL 中的特定域名