クライアント/マター番号に一致する正規表現を.NETで記述しようとしています。クライアント番号またはマター番号は一連の文字または数字で構成され、クライアント/マター番号は/
、-
、または.
で区切られたクライアント番号とマテリアル番号のコンボです。たとえば、0204A/101
です。次の文字列で重複するマッチを除外するための正規表現
:
はFoo [101分の1234]バー456B/102バズ私はそれが
[1234-101]
と456B/102
に一致させたい
。
[^a-zA-Z0-9]*([a-zA-Z0-9]+[/\.\-]{1}[a-zA-Z0-9]+)[^a-zA-Z0-9]*
私はキャプチャグループを使用して、各マッチからクライアント/マター番号を抽出することができます。
問題は次のとおりです。日付の最初の2つのコンポーネントまたは最後の2つのコンポーネントがクライアント/マター番号の一致と誤って解釈されないように、日付を除外します。たとえば、私の文字列に5/3/2016
があるとしたら、 "Foo [1234-101] bar 456B/102 baz 5/3/2016"と入力した場合、5/3/
は一致しません。これに対処するために、私は最初に、最終的な否定範囲の最後に/\.\-
を追加してみました:私の数量詞*
がゼロ以上であるので、それだけで発生するものとして否定範囲を扱うため
[^a-zA-Z0-9]*([a-zA-Z0-9]+[/\.\-]{1}[a-zA-Z0-9]+)[^a-zA-Z0-9/\.\-]*
これはかかわらず、動作しませんでした0回と一致して5/3
に一致します。理にかなって
[^a-zA-Z0-9]*([a-zA-Z0-9]+[/\.\-]{1}[a-zA-Z0-9]+)([^a-zA-Z0-9/\.\-]+|$)
しかし、これだけでマッチした/3/2016
:次に、私はそれそう否定範囲1回以上発生したか、それは文字列の最後に遭遇したいずれか作ってみました。
パターンを調整して1つのインスタンスに一致させることはできますが、重複するインスタンスでは失敗することはできますか?たとえば、5/3
をfoo 5/3 bar
とし、3/2016
をfoo 3/2016 bar
に一致させますが、5/3/
または/3/2016
ではなく、foo 5/3/2016 bar
に一致させます。あなたが尋ねたよう
あなたの望むものと一致して覚えておいてください。 –