2011-07-15 23 views
3

私はこれをやろうとしているだけの単語にマッチします を私は(つまりファイル)のテキストのこの種を持っている:私は二重の間だけの文章を望んJavaの正規表現は、二重の角括弧

[[dadasd sadasd sdsd ad asddd]] [[dasdsd]] dsdsd [[dsdas]] ... [[dd ssas dd]]

角括弧。どうすればこの問題をJavaで解決できますか?

//This one is not working: 
    String patternStr = "(.*)\\[\\[(.*)\\]\\](.*)"; 
     Pattern pattern = Pattern.compile(patternStr); 
     Matcher matcher = pattern.matcher(""); 

     // Set the input 
     matcher.reset("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] "); 
... 

事前に感謝

答えて

4

あなたは、次の正規表現したい:

\[\[(.+?)\]\] 

その後、としてJava文字列に変換します。

\\[\\[(.+?)\\]\\] 

PowerShellのテスト:

PS Home:\> [regex]::Matches("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] ", '\[\[(.+?)\]\]') | ft -auto 

Groups        Success Captures    Index Length Value 
------        ------- --------    ----- ------ ----- 
{[[sdasd]], sdasd}      True {[[sdasd]]}    0  9 [[sdasd]] 
{[[ddssssssssssss]], ddssssssssssss} True {[[ddssssssssssss]]} 14  18 [[ddssssssssssss]] 
{[[dd]], dd}       True {[[dd]]}    40  6 [[dd]] 
{[[asdsa]], asdsa}      True {[[asdsa]]}    55  9 [[asdsa]] 
+0

ティム:私は例を考えると、今のことを取り出しました彼らは投稿した。彼らが異なった入力を予期したら、彼らはそう言っていたはずです。 – Joey

+0

文字列patternStr = "\\ [\\ [[^ \\]] + \\] \\]"; \t \tパターンパターン= Pattern.compile(patternStr); \t \t Matcher matcher = pattern.matcher( "");入力 \t \t matcher.resetを( "[[sdasd] DDD [ddsssss SSSSSSS] vvvddd [DD] asdasda [asdsa]]")を設定 \t \t //。 \t \t boolean matchFound = matcher.find(); \t \t if(matchFound){ ... 最初のgroups.count = 0 ...:S – Mux

+0

ありがとう!これはまさに私が探していたものでした。それは私のために働いた:https://regex101.com/r/gD8fV3/3 – Ryan

3

あなたは単に修正regexで:\[\[(.*?)\]\]またはこの1:\[\[([^\[\]]*)\]\]

ので、文章はグループはありません1

結果である結果:と(?<=\[\[)[^\[\]]*(?=\]\])

enter image description here

またはこの正規表現を使用しますルックアヘッドとルックバックハイド。

結果:

enter image description here

+0

それは何も一致しない...私は二重角括弧の間に文章を取得する必要があります... 入力:[[dsdas ddd ]] asjdiajd [[ððð]] 出力:dsdas(ddd、 ðð: – Mux

+0

@Mux、私は私の答えを更新しました。 –

1

あなたはこのような何かを行うことができます。

Pattern pattern = Pattern.compile("\\[+(.*?)\\]+"); 
Matcher matcher = pattern.matcher("[[sdasd]] ddd [[ddssssssssssss]] vvvddd [[dd]] asdasda [[asdsa]] "); 
while(matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

これは、出力は以下となります。

sdasd 
ddssssssssssss 
dd 
asdsa 
+0

ありがとうございました!!! – Mux

関連する問題