0

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

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

护照详情

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

4 回答 4

1

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

/[<special_characters_here>]/

但是,通常最好使用白名单,从而提及所有允许的字符并将所有不是它们的字符替换为空格字符:

/[^<allowed_characters_here>]/
于 2009-11-04T12:13:05.927 回答
1

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

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

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

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

于 2009-11-04T12:15:00.853 回答
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);
于 2009-11-04T12:18:33.250 回答
0

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

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

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

于 2009-11-04T13:01:03.810 回答