我正在尝试查找括在双括号中的所有单词,并在单词的中间包含一个括号,我正在使用Java。
到目前为止,我有这个,但它不太有用。
\\[\\[[\\[|\\]]\\]\\]
有什么建议吗?
对于此示例输入"hello [[wo[orld]]"
,我想找到"[[wo[orld]]"
。
答案 0 :(得分:4)
这应该做:
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]]
模式细分:
\[\[
- 两个初始[[
(你已经做到了!)[^\[\]]*
- 除[
和]
以外的其他内容<0} [\[\]]
- “中间”括号符号[^\[\]]*
- 除[
和]
以外的其他内容<0} \]\]
- 两次关闭]]
(你发现的那个)答案 1 :(得分:1)
如果你想捕捉双括号中的内容,如果你不在乎单个括号周围是否有其他非括号字符,请尝试:
(\[\[[^\[\]]*\[[^\[\]]*\]\])
否则,如果最里面的括号周围必须至少有一个非括号字符,请将星号更改为加号,即:
(\[\[[^\[\]]+\[[^\[\]]+\]\])
答案 2 :(得分:-2)
术语括号有点重载但我假设您正在尝试匹配表单的字符串:
[[一些[事情]]
String sampleString = "[[some[thing]]";
System.out.println(Pattern.matches("\\[\\[.*\\[.*\\]\\]", sampleString)); //true
Pattern.matches()是一个静态方法,对匹配返回true,否则为false