0

区切りリストからクリーンな値を抽出する正規表現を作成しようとしています。問題は、リストがさまざまな記号または単語で区切られている可能性があることです。キャプチャされた値はコードでトリミングされるため、スペースは問題になりません。

入力:

English (UK), French* , German and Polish  & Russian; Portugese and Italian

私がこれまで持っている正規表現:

\A(?:(?<Value>[^,;&*]+)[,;&\s*]*)*\Z

私が期待している区切り文字は,;&. を含めたのは*、取得した値から除外したいからです。

キャプチャされた値:

English (UK), French, German and Polish, Russian, Portugese and Italian

期待値:

English (UK), French, German, Polish, Russian, Portugese, Italian

私が抱えている問題はand、区切り文字として扱われることができないことです。

4

3 に答える 3

1

これは私が思いついたものです:

\A(?:(?<Value>(?:[^,;&*\s]|\s(?!and))+)(?:(?:and|[,;&\s*])*))*\Z

説明:

(?:...)は非キャプチャ グループであり、一致を変更せず、結果をグループに保存しません。

(?!...)負の先読みで、後続の文字が指定されたパターンに一致しない場合に一致します。

Value基本的に、これは「and」が後に続かない場合の一部として空白にのみ一致し、セパレーターに「and」が含まれます。

これは非常に複雑に思え" and "ます。セパレーターに置き換えて、現在の式を使用することができます。

テスト

于 2013-09-17T10:02:10.873 に答える
0

または、現在の結果に対してこれを行うだけです:

desiredResult = currentResult.Replace("and", ",");
于 2013-09-17T09:59:03.947 に答える