0

私は文字列の配列を持っています。配列の各要素で次のパターンをチェックしています: [[some word]].

要素は 2 つの角かっこで始まり、2 つの角かっこの間に単語または文を挟んで終了する必要があります。

から文字列「some word」を抽出する必要もあります[[some word]]。Java の正規表現がわかりません。PHP などのスクリプト言語とは大きく異なるようです。

例えば。[[this is an example]]配列をトラバースしているときに遭遇した場合は、 を出力する必要があります"this is an example"。これは、二重角括弧で囲まれたすべての文字列に対して行う必要があります。

4

3 に答える 3

3

次のコード:

String input = "How to write a regex for words like [[gold]] or [[Archimedes]] in JAVA";
String regex = "\\[\\[(.*?)\\]\\]";
Matcher matcher = Pattern.compile(regex).matcher(input);
int idx=0;
while(matcher.find(idx)){
  String match = matcher.group(1);
  System.out.println(match);
  idx = matcher.end();
}

プリント:

gold
Archimedes

実際の正規表現 (エスケープなし\) は次のとおりです。

\[\[(.*?)\]\]

正規表現の視覚化

于 2013-10-25T20:02:37.360 に答える
2

私はこの正規表現があなたのために働くはずだと信じています:

"(?s)\\[\\[(.*?)\\]\\]"

これは、 (DOTALL)を使用しているため、[[との間の複数行の文も取得します。]](?s)

于 2013-10-25T19:58:58.873 に答える