3

目的

記号の前に46 回以上ある任意の数字、単語文字、またはスペースに一致させたい。<

1 つの注意点は、C# コードにプラグインする前に、この RegEx を Notepad++ で使用しようとしているということです。

データ

<Elem1>123 ABC Street</Elem1> // should NOT match
<Elem1>123637 ABC Street Suite 1, Kalamzoo, FL 15264-8574</Elem1>

正規表現

現在、次の正規表現があります。

^.*<Elem1>[\d\w\s]{46,}?

[\d\w\s]{46,}?これが要素の内部部分と一致しない理由がわかりません。

あなたの答えを楽しみにしています!

4

3 に答える 3

8

入力に含まれる 3 つの文字クラスのいずれにも属さないコンマとハイフンが含まれているため、一致しません。

これは一致します:

^.*<Elem1>[\d\w\s,-]{46,}?

<Elem1>さらに、正規表現が複数行モードで実行されている場合は、入力アンカーの開始を含めてから、「ああ、 " の前にある文字は無視してください。それ以外の場合は、同じ効果が得られます

<Elem1>[\d\w\s,-]{46,}?
于 2013-01-14T12:57:44.447 に答える
1

バックスラッシュ グループには、数字、単語文字、および空白のみが含まれているため、コンマとダッシュ (例のように) は含まれません。また、タグ間のすべてを本当に一致させたい場合は、 を削除し?て貪欲にし、終了タグも追加する必要があります。その後、キャプチャ グループを使用して内部コンテンツを取得できます: ()

^.*<Elem1>([\d\w\s,-]{46,})</

または、他の文字も確実にキャッチしたい場合は<、タグ内の記号以外の任意の文字を受け入れることができます。

^.*<Elem1>([^<]{46,})</
于 2013-01-14T13:03:30.800 に答える
1

この正規表現を使用します<Elem1>[\w\s]{46,}

于 2013-01-14T12:56:36.383 に答える