代码之家  ›  专栏  ›  技术社区  ›  Shekhar

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

  •  0
  • Shekhar  · 技术社区  · 16 年前

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

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

    护照详细信息

    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 回复  |  直到 16 年前
        1
  •  0
  •   Andrew Barrett    16 年前

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

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

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

        2
  •  1
  •   user181548    16 年前

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

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

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

    http://codepad.org/KTMvQiOz . 这里 [^[:ascii:]] 是与任何非ASCII字符匹配的regex。

        3
  •  1
  •   Franz    16 年前

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

    /[<special_characters_here>]/
    

    但是,通常最好使用白名单,这样会提到所有允许的字符,并用空格字符替换所有不允许的字符:

    /[^<allowed_characters_here>]/
    
        4
  •  0
  •   Adam    16 年前

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

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

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