我試圖找到所有包含在雙括號中的單詞,並且在單詞的中間包含括號,我正在使用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
您可以舉例說明您正在嘗試查找什麼嗎?示例輸入和輸出將很有用。 –