2

私はそのような表現をしています。

collection = collection.Where(x => Regex.IsMatch(x, "[a-zA-Z0-9+#-\\.\\s]+", RegexOptions.IgnoreCase)).ToList();

フィルタリングする前に、コレクションには次のような要素があります。

a+1, a#1, a-1, a.1, a 1, ab, a'1, a@1, a*1, a&1, a:1, a!1

その後、次の要素のみを残したい:

a+1, a#1, a-1, a.1, a 1, ab

しかし、要素は捨てられません。

文字、数字、プラス、ハッシュ、マイナス、ドット、空白で構成される要素のみを保持する必要があります。

この正規表現を修正するには?

4

1 に答える 1

3

正規表現は、要素にテキストに一致する部分文字列が含まれているかどうかを確認します。すべての要素にa(正規表現に一致する)が含まれているため、すべての要素が保持されます。

部分文字列を完全に一致させる場合は、正規表現を^...$(テキストの最初と最後をマークする)で囲みます。

... Regex.IsMatch(x, "^[a-zA-Z0-9+#-\\.\\s]+$", ...

編集:さらに、ダッシュ-をグループの最後に移動する必要があります:

... Regex.IsMatch(x, "^[a-zA-Z0-9+#\\.\\s-]+$", ...

それ以外の場合は、からまでのすべての文字に一致し#-\\.ます。#.

于 2012-04-27T11:26:00.690 に答える