如何使用正则表达式替换特殊字符?

时间:2009-11-04 12:08:57

标签: c# regex special-characters

如何使用正则表达式替换特殊字符? 特别是,我的意思是那些有时出现在文本中的符号字符。

例如,在下面的文字中,我想删除每行开头的气泡。

护照详情

Name as on passport
Relationship
Passport Number
Date of Issue
Expiry Date
Place of Issue

编辑问题:抱歉,行开头的气泡不再可见。提交问题后,stackoverflow删除了该特殊字符。

任何人都知道如何更换这些特殊字符?我不想替换像#,@或!这样的字符。这些都是微不足道的,可以用键盘打字。

抱歉,我不知道如何将这些特殊字符放在我的问题中。我会尝试解释。在word文件中,我们在文本之前放置子弹。我想替换代表这些字符的字符。我有一些文本文件,其中包含看起来像泡泡的字符。

最后,我找到了解决方案。 这个正则表达式适合我

([^(A-Za-z0-9)+ | \ r | \ n | \ t |'|“|#|; |:| / | \ |。|,|])

4 个答案:

答案 0 :(得分:1)

可以使用此正则表达式查找所有“特殊”字符,然后只用空格字符替换它们:

/[<special_characters_here>]/

但是,通常最好使用白名单,因此提及所有允许的字符,并用空格字符替换不是它们的所有内容:

/[^<allowed_characters_here>]/

答案 1 :(得分:1)

(这是在指定语言之前发布的。)

用Perl中的空格替换非ascii字符,

 $string =~ s/[^[:ascii:]]/ /g;

http://codepad.org/KTMvQiOz。这里[^[:ascii:]]是一个匹配任何非ascii字符的正则表达式。

答案 2 :(得分:0)

您的意思是更换回车符和换行符吗?

如果这就是你所追求的,那就可以做到:

var source = "once\r\ntwice\r\nthrice";
var pattern = new Regex(@"\r\n");
var result = pattern.Replace(source, ",");
Assert.AreEqual("once,twice,thrice", result);

答案 3 :(得分:0)

我没有足够的时间来充实一个完整的例子。但是,由于您使用的是.NET,因此您可以匹配任意数量的这些字符类:

http://msdn.microsoft.com/en-us/library/20bw873z.aspx

选择您要接受的内容并替换任何不等于该内容的内容。