#環境
以下の環境のjava言語を使用しています。
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
質問の中では見やすい様にバックスラッシュを1つだけ記入していますが、javaの仕様上、本来のコードの中ではバックスラッシュを2つ重ねるか円マークを使用しています。
#質問
{*
から始まり、*}
で終わる文字列とマッチさせる処理についてです。
これだけなら\{\*.*\*\}
の様に書くのが普通でしょうか。
これに改行も対応させたいです。
\{\*[\t-~]*\*\}
の様に書けば出来たのですが、良い書き方なのでしょうか。
そして本題ですが、ネストに対応させたいです。
{* a {* b *} c *}
に対しては全てマッチし、
{* a {* b *}
や{* b *} c *}
に対しては
{*b*}
の部分だけマッチさせたいです。
色々試しましたが、何かうまくいきません。
再起的な処理になるので、正規表現だけでは無理があるのですかね。
#訂正
この括弧のルールだと、エスケープ文字が乱れてしまうので、ここでは
{*
ではなく<
,
*}
ではなく>
の様な括弧の対応で考える事にします。
< a < b > c >
には < a < b > c >
< a < b >
には < b >
< < a > b
には < a >
< a < b < c > >
には < b < c > >
< a > b < c >
には < a >
と< c >
のようになります。
<
と>
の数が対応する条件で、一番外側の括弧とその中身がマッチするという様にしたいです。
回答6件
あなたの回答
tips
プレビュー