私は文字列からすべての非文字とスペースを除外するために.NET Regex.Replace(VB.NETの例)を使用しようとしています。たとえば、以下の文字列sでは、パターン[^ A-z]は空白以外のすべての非アルファベットを削除するべきだと考えました。しかし、それは動作していないようです。私は間違って何をしていますか?ここで.net regex.replaceキャレット文字を除外しないでください
Sub Try_Regex_Remove_Caret_Symbol()
'^(caret) character is not being removed via exclusion
Dim s As String, p As String
s = "I have a caret which I want removed ^[email protected]#!&"
p = "[^A-z ]"
Console.WriteLine("Input : " & s)
Console.WriteLine("Output: " & Regex.Replace(s, p, ""))
' Input : I have a caret which I want removed ^[email protected]#!&
' Output: I have a caret which I want removed^
' Note that the caret (^) is not removed as expected
End Sub
はそれを手に入れました。それは理にかなっている。ありがとうございました。 –
Regexの仕様がASCIIの順序に依存していることはわかりませんでした。機能的には理にかなっていないようです。大部分の人間の数学者が "AからZまたはスペースにないすべてのもの"を指定した場合(スペックがあいまいであることがわかります)、おそらく、特別な文字はそのASCIIテーブル。 Perlがこのように動作するので、初期のPCRE実装の奇抜であるように見えます。 –