【问题标题】:regular expression for finding string between [[ ]] and {{}}用于在 [[ ]] 和 {{}} 之间查找字符串的正则表达式
【发布时间】:2013-08-18 18:10:44
【问题描述】:

如何在[[]] 之间找到字符串?搜索答案后,我在下面找到了这个方法,但我找不到[[ ]] 的正则表达式,{{ }} 也找不到。

我想做的是找到例如[[abc]]XXXXXXXXXX[[def]],并将abc、def另存为ArrayList。

String s = "[[abc]]XXXXXXXXXX[[def]]";
Pattern p = Pattern.compile("[[(.*?)]]")
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(i)); // => "abc","def"
}

【问题讨论】:

  • 它们是否包含嵌套和/或转义的括号/大括号?
  • 您需要转义 [,因为它们是正则表达式特殊字符。
  • @Amber 或使用[[][[](.*?)[]][]] :P
  • @HamZa 是为了可读性:D
  • 这种数据{{a[[b]]e}},[[a{{b}}c]]应该是什么结果?或者这种输入是不可能的?

标签: java regex


【解决方案1】:

您必须双重转义左方括号(您可以对右方括号执行相同的操作),因为它们用于定义字符类:

Pattern p = Pattern.compile("\\[\\[(.*?)]]");

(与花括号完全相同,用于量词)

您可以阅读这篇fabulous post,了解令人难以置信的方括号世界。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多