2

これは完璧に機能します。

 result2 = Regex.Replace(result2, "[^A-Za-z0-9/.,>#:\s]", "", RegexOptions.Compiled)

ただし、角かっこ([および])を許可する必要があります。上記から許可されているものと許可されていないものを変更せずにブラケットを許可するには、これは正しいように見えますか?

result2 = Regex.Replace(result2, "[^A-Za-z0-9\[\]/.,>#:\s]", "", RegexOptions.Compiled)

セカンドオピニオンが必要な理由は、これが正しければ、他の何かがそれをブロックしていて、私のコントロールが及ばないと思うということです。

4

2 に答える 2

2

誰もが質問に答えたり、助けようとしたりしなかったとは言えません。考えさせられたので、できれば全員に解決策を分けました。重要なのは、単一の\を使用して角かっこを区切ることでした。皆さんの助けに感謝します。

  result = Regex.Replace(result, "[^A-Za-z0-9/\[\].,>#\s]", "", RegexOptions.Compiled)
于 2012-09-18T19:01:15.593 に答える
0

言及されたギミック@tripleeeは、実際に.NETで機能します。]最初の文字(またはこの場合は、の後に最初の文字)であることを確認して^ください。

result2 = Regex.Replace(result2, "[^][A-Za-z0-9/.,>#:\s]", ""); 

ただし、正規表現を他のフレーバーに移植する場合は注意が必要です。構文エラーとして扱うものもあれば、2つのアトムとして扱うものもあります。[^]最初[A-Za-z0-9/.,>#:\s]のアトムは文字通り何にも一致しません。つまり、改行を含むすべての文字に一致します。

ちなみに、なぜこのRegexOptions.Compiledオプションを使用しているのですか?これは、必要であることがわかっている場合にのみ使用する必要があります。ここで説明するように、パフォーマンスの向上はほとんど重要ではなく、かなり高い値札が付いています。

http://msdn.microsoft.com/en-us/library/8zbs0h2f.aspx

于 2012-09-18T17:03:24.083 に答える