有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用正则表达式在括号中查找包含单个字符的单词

我试图找出所有的单词都是用双括号括起来的,中间有一个括号,我用的是java。p>

到目前为止,我已经有了这个功能,但还没有完全发挥作用

\\[\\[[\\[|\\]]\\]\\]

有什么建议吗

对于这个示例输入"hello [[wo[orld]]",我想找到"[[wo[orld]]"


共 (3) 个答案

  1. # 1 楼答案

    这应该做到:

    String str = "hello [[wo[orld]]";
    
    Pattern p = Pattern.compile("\\[\\[[^\\[\\]]*[\\[\\]][^\\[\\]]*\\]\\]");
    Matcher m = p.matcher(str);
    
    if (m.find())
        System.out.println(m.group(0));
    

    输出:

    [[wo[orld]]
    

    模式分解:

    • \[\[两个首字母{}(你已经说对了!)
    • [^\[\]]*[]零次或多次之外的其他事物
    • [\[\]]“中间”括号符号
    • [^\[\]]*[]零次或多次之外的其他事物
    • \]\]两个结束{}(你也算出了那一个)
  2. # 2 楼答案

    术语括号有点过多,但我假设您正在尝试匹配以下形式的字符串:

    【某物】

    String sampleString = "[[some[thing]]";
    System.out.println(Pattern.matches("\\[\\[.*\\[.*\\]\\]", sampleString)); //true
    

    模式。matches()是一个静态方法,它为匹配返回true,否则返回false

  3. # 3 楼答案

    如果要捕获双括号中的内容,并且不关心单括号周围是否有其他非括号字符,请尝试:

    (\[\[[^\[\]]*\[[^\[\]]*\]\])

    否则,如果最里面的括号周围必须至少有一个非括号字符,请将星号更改为加号,即:

    (\[\[[^\[\]]+\[[^\[\]]+\]\])