用于拉丁语-1增补(\x80-\xFF)字符的.Net正则表达式

用于拉丁语-1增补(\x80-\xFF)字符的.Net正则表达式,.net,regex,vb.net,unicode,.net,Regex,Vb.net,Unicode,我正在处理用户提交的文件,这些文件中有许多无效字符,大多数文件都是通过MS Word将连字符转换为短划线或引号转换为“智能引号”。我正在编写一个方法来专门替换其中几个字符(例如,将破折号转换回连字符),现在我需要用空格替换所有其他“无效”字符。因此,我的第一次尝试是使用正则表达式将无效字符与“[\x80-\xFF]”匹配,然后仅替换匹配的字符。我的想法是,只有循环匹配才会比blah=blah.replace(chr(128),“”)形式的127个替换快得多 我遇到的问题是.net正则表达式似乎与

我正在处理用户提交的文件,这些文件中有许多无效字符,大多数文件都是通过MS Word将连字符转换为短划线或引号转换为“智能引号”。我正在编写一个方法来专门替换其中几个字符(例如,将破折号转换回连字符),现在我需要用空格替换所有其他“无效”字符。因此,我的第一次尝试是使用正则表达式将无效字符与“[\x80-\xFF]”匹配,然后仅替换匹配的字符。我的想法是,只有循环匹配才会比blah=blah.replace(chr(128),“”)形式的127个替换快得多

我遇到的问题是.net正则表达式似乎与\x7F(dec 127)以上的十六进制值不匹配或不替换。有没有办法将.net正则表达式设置为使用完整的unicode字符集


提前感谢。

我已经看到正则表达式应该接受带转义符的unicode(例如.\u0080),但是我无法在我知道包含该字符的字符串上找到匹配项。好的,我已经解决了我的具体问题,但仍然对如何让正则表达式识别更高ascii字符的一般问题感兴趣。我能找到的所有unicode示例在示例中都具有较低的ascii,例如\u0020。对于我的具体问题,我否定了regex.match为[^\x00-\x7F]。很抱歉没有回答您的问题,但是是什么让您认为这些字符是“无效”的?如果是,为什么您会默默地“替换”它们,而不是拒绝无效的输入?如果您正在编写一个C解析器或需要受限输入的东西,我可以理解这一点,但这里真的是这样吗?用户真的打算使用排版字符或其他什么,而您正在破坏他们的数据,这是不可能的吗?其他不在[x80-\xFF]范围内的“无效”数据呢?