【问题标题】:C# regular expression to match ANY character?C#正则表达式匹配任何字符?
【发布时间】:2011-04-27 19:11:52
【问题描述】:

在 C# 中,我将以下字符串写入字符串变量、回车和所有内容:

asdfasdfasdf
asdfas<test>asdfasdf

asdfasdf<test>asdfasdf

在 Notepad2 中,我使用这个正则表达式:

<test>.*<test>

它按预期选择此文本:

<test>asdfasdf

asdfasdf<test>

但是,当我在 C# 中执行此操作时:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty);

它不会删除字符串。但是,当我在没有任何回车的字符串上运行此代码时,它确实有效。

所以我正在寻找的是一个匹配任何字符的正则表达式,无论它是控制代码还是常规字符。

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    您忘记指定 Regex 操作(特别是 . 运算符)应匹配 所有 个字符(不是所有字符 除了 \n):

    System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty, RegexOptions.Singleline);
    

    您只需要添加RegexOptions.Singleline

    【讨论】:

    • 哈!你说得对!当 stackoverflow 允许时,我会在 10 分钟内将您的回复标记为答案 =P。
    【解决方案2】:

    使用单行模式:

    Regex.Replace(s, "<test>.*<test>", "", RegexOptions.Singleline);
    

    【讨论】:

      【解决方案3】:

      您可以删除字符串中的回车符,然后进行匹配:

      s = s.Replace(Environment.NewLine, "");
      

      然后它应该按预期工作:

      System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty);
      

      【讨论】:

        猜你喜欢
        • 2012-08-22
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 2011-02-24
        相关资源
        最近更新 更多