1

xml 要素を照合し、オプションの属性のグループを作成したいと考えています。属性が存在しない場合は、他のアクションを実行します。たとえば、私は持っています

<customer display="no">

customer 要素で照合したいのですが、表示属性が存在しない可能性があります。コードでは、そのキャプチャ グループが空であるかどうかを確認し、空である場合はカスタム ロジックを実行します。

だから私が持っている正規表現は

<customer.*(display="yes|no").*?>

属性がある場合は要素に一致しますが、要素が含まれているかどうかを確認できるように、グループをオプションにするにはどうすればよいですか?

4

2 に答える 2

1

正規表現の他のオプションのコンポーネントと同じように、グループの後に疑問符を付けることができます。これを行う場合は、( を追加して)最初の行を.*遅延させる必要もあり?ます。そうしないと、行全体が消費されます。

したがって、次のようなものが必要です。

<customer.*?(display="yes|no")?.*?>

(display="yes|no")また、おそらくあなたが望むものと一致しないことに注意してください。一致するdisplay="yesno" どう display="yes"か、またはdisplay="no". 代わりにあなたが欲しいと思い(display="(?:yes|no)")ます。

于 2012-10-08T04:52:53.500 に答える
0

この正規表現を試してください:

<customer.*?(display="(?:yes|no)").*?>

説明:

?

前の要素に0回または1回一致します。

*?

前の要素と0回以上一致しますが、可能な限り少なくなります。

(?: subexpression)

非キャプチャグループを定義します。

于 2012-10-08T04:49:32.550 に答える