我试图找到所有包含在双括号中的单词,并且在单词的中间包含括号,我正在使用Java。使用正则表达式查找包含单个字符的括号中的单词
我有这个到目前为止,但它不太工作。
\\[\\[[\\[|\\]]\\]\\]
有什么建议吗?
对于此示例输入"hello [[wo[orld]]"
,我想找到"[[wo[orld]]"
。
我试图找到所有包含在双括号中的单词,并且在单词的中间包含括号,我正在使用Java。使用正则表达式查找包含单个字符的括号中的单词
我有这个到目前为止,但它不太工作。
\\[\\[[\\[|\\]]\\]\\]
有什么建议吗?
对于此示例输入"hello [[wo[orld]]"
,我想找到"[[wo[orld]]"
。
这应该这样做:
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]]
模式击穿:
\[\[
- 两个初始[[
(你说对了!)[^\[\]]*
- 有些东西比[
和]
零次或多次[\[\]]
- “中间”支架符号[^\[\]]*
- 有些东西比[
和]
零次或多次\]\]
- 双合]]
(一个你想通了也一样)如果你想要营造的是在双括号,如果你不在乎是否有围绕单一支架等非括号字符,请尝试:
(\[\[[^\[\]]*\[[^\[\]]*\]\])
否则,如果必须有各地最里面的支架至少一个非括号字符,改变星号来加分,又名:
(\[\[[^\[\]]+\[[^\[\]]+\]\])
术语支架有点超负荷,但我认为你要匹配的字符串形式:
[某些[事物]
String sampleString = "[[some[thing]]";
System.out.println(Pattern.matches("\\[\\[.*\\[.*\\]\\]", sampleString)); //true
模式。matches()是一个静态方法,对于匹配返回true,否则为false
'[]'=括号,'{}'=大括号,'()'=圆括号:在软件世界里没有什么让人困惑的事情,它一直是这样的。此外,此模式不符合要求'。*'会匹配'['或']'以及您必须排除它们。 –
为了公平起见,我听说'{}'被称为“大括号”。但是,不合格的“括号”总是意味着'[]'。 – 2011-09-02 19:55:26
'<=尖括号,'['=方括号,'{'偶尔被称为大括号。这个问题的原始发布没有提供一个例子,所以我说明了我的假设。 – Timulus
您可以举例说明您正在尝试查找什么吗?示例输入和输出将很有用。 –