1

以下のサンプルxmlで特殊文字の出現を見つけようとしています。

<?xml version="1.0"?>
<PayLoad>
<requestRows>****</requestRows>
<requestRowLength>1272</requestRowLength>
<exceptionTimestamp>2012070202281068-0700</exceptionTimestamp>
<exceptionTimestamp>201$2070202281068-0700</exceptionTimestamp>
<exceptionTimestamp>20120(702022810680700</exceptionTimestamp>
<exceptionDetail>NO DATA AVAILABLE FOR TIME PERIOD SPECIFIED   =</exceptionDetail>
</PayLoad>

$、(、=、-文字を含むタグ全体を見つける必要があります。このため、正規表現パターンの下に記述し (<[\w\d]*>\w*(?<value>[^\w]+)\w*\d*</[\w\d]*>) 、次の出力を返します(Expresso Toolで実行)

<requestRows>****</requestRows>
<exceptionTimestamp>2012070202281068-0700</exceptionTimestamp>
<exceptionTimestamp>20120(702022810680700</exceptionTimestamp>

ただし、2エントリ未満に戻る必要があります。

<exceptionTimestamp>201$2070202281068-0700</exceptionTimestamp>
<exceptionDetail>NO DATA AVAILABLE FOR TIME PERIOD SPECIFIED   =</exceptionDetail>

これらのエントリは、複数の特殊文字(スペースを含む)が含まれているため省略されています。上記のシナリオの正しい正規表現を教えてください。ありがとう。

4

1 に答える 1

1

中間部分はルックアラウンドを使用するので、代わりに

(<[\w\d]*>\w*(?<value>[^\w]+)\w*\d*</[\w\d]*>)

私は使うだろう

(<[\w\d]*>(?=[^<]*[^<\w])(?<value>.*)</[\w\d]*>)

?<value>構文がよくわからない部分がないと、次のようになります。

(<[\w\d]*>(?=[^<]*[^<\w]).*</[\w\d]*>)

特に何かを保存したい場合は、好きな場所にキャプチャグループを追加するだけです。

于 2012-07-19T10:41:27.770 に答える