2017-02-28 6 views
0

現在のところ、&[text(text - text text) !text]という形式に一致するすべての文字列を分割するための正規表現を作成しています。ここでは、テキストは本当にどんなcharでもかまいません。スペーシングは重要です。テキストは次のように表示されます。私は、次の正規表現を試してみましたが、私はそれを動作させるように見えることはできませんjava regex matching&[text(text-text text)!text]

&\\[([^\\]]*)\\] 

任意の助けいただければ幸いです。

+0

あなたはそのパターンで分割機能を持つ 'text'を抽出したいですか? –

+0

いいえ、私はそのパターンに一致するテキストを置き換えようとしています。 –

+0

したがって、以下の答えはあなたのために働くはずです –

答えて

1

text\w+に置き換えて、1文字以上の単語をキャプチャします。ご希望の場合にも\wの代わりに[a-zA-Z]を使用することができ

&\[\w+\(\w+ - \w+ \w+\) !\w+\]

:他の と仮定すると、すべてのものは、次の正規表現は動作するはずです、リテラルました。これは、一致する文字を明示的に記述しているので、理解しやすい場合があります。a-zおよびA-Zです。

&\[[a-zA-Z]+\([a-zA-Z]+ - [a-zA-Z]+ [a-zA-Z]+\) ![a-zA-Z]+\]

そして唯一の文字のために、+

&\[\w\(\w - \w \w\) !\w\]

&\[[a-zA-Z]\([a-zA-Z] - [a-zA-Z] [a-zA-Z]\) ![a-zA-Z]\]

PSを削除 - -は、&、または!は、正規表現のシンボルとしてcoutnedされている場合、私は覚えてカントもしあなたが\-、01を使ってそれらをリテラルにすることができるなら、または\!です。

P.P.S - javaでは、\をエスケープする必要がありますので、\w\\wになります。

+0

あなたは ' ')'文字も同様です。 – Obicere

+0

あなたは正しいですか?私は答えを変更します – Chris

+0

それはまだ動作していません、私は次のように条件に一致するすべてのテキストを置き換えようとしています:text.replaceAll( "&\\ [\\ w + \\(\\ w + - \\ w + this&[RECNUM!## 0000] test&[SUM(Patron - Account Balance)!#、## 0.00]のような文字列を使用して、\\ w \ ]。正規表現は、最初のマクロを無視し、2番目のマクロを置き換え、テキストを置き換えません。どんな助けでも大歓迎です。 –

0

あなたはグループの後に彼らと仕事するようtextを抽出したい場合:

&\\[(\\w+)\\((\w+)\\s\\-\\s(\\w+)\\s(\\w+)\\)\\s!(\\w+)] 

example