0

このオプションのグループをどのようにキャプチャできますか? (つまり、複数の行を消費することを意味します) ここに画像の説明を入力

緑のグループ-> オプションのグループ

赤い線-> 新しいセグメント (同じパターンが繰り返されます)

私のパターン:

(\t{2}<idx:entry name="dic">\r\n)(\t{4}<idx:orth>)(.+\r\n)(\t{4}<idx:infl>[^</idx:infl>]+)?

ここに画像の説明を入力

固定長を持たないこのオプションのグループをキャプチャする方法はありますか?

4

2 に答える 2

1

これを試して:

\s*<idx:entry name="dic">\s*<idx:orth>[^<]*\s*(<idx:infl>\s*.*\s*</idx:infl>)

タグ間の空白は XML では無視されるため、正規表現でタブと改行の正確な数を指定する必要はありません。空白を表すために使用するだけ\sです (これには、スペース、タブ、改行が含まれます)。

括弧の間のすべてがキャプチャされ、正規表現エンジンを使用して、または正規表現エンジンに応じて、()このグループにアクセスできます。\1$1

ただし、XML を解析する場合は、通常、XPathなどの適切な DOM パーサーを使用することをお勧めします。

于 2013-07-21T18:30:03.440 に答える
0

複数行を消費するのにこれが役立つことがわかりました:

[\s\S]*</idx:infl>
于 2013-07-21T21:00:19.170 に答える