【问题标题】:Only match regular expression in c# string仅匹配 c# 字符串中的正则表达式
【发布时间】:2010-01-09 06:48:05
【问题描述】:

我不太擅长正则表达式,所以这可能是一个显而易见的问题。

如果找到一定数量的字符,我希望我的表达式匹配,如果存在任何额外的字符,则失败。例如,如果我有一个应该有 4 位数字的字符串,那么以下应该是正确的。

1234 - 匹配
ab1234cd - 不匹配
012345 - 不匹配

到目前为止,我所拥有的是 \d{4},但我的理解是,它只会匹配任何包含 4 位数字的字符串。我只想匹配一个字符串包含 4 个数字而没有其他内容。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    使用 ^ 和 $ 标记字符串的开始/结束。

    【讨论】:

    • 是的,^\d{4}$ 是一个只包含四位数字的字符串。
    【解决方案2】:

    根据您的实现方式(单行模式或多行模式),您可以使用类似于:

    ^\d{4}$
    

    只匹配(字符串的开头)四位数字(字符串的结尾)。

    【讨论】:

      【解决方案3】:

      \b[0-9]{4}\b 或 ^\d{4}$ 都应该工作。也许我可以稍微扩展一下 GrayWizardx 所说的内容(以防你在 C# 中使用的正则表达式不多),上面提供的正则表达式会查找只有 4 位数字的行。默认情况下(如果我没记错的话),正则表达式引擎只查看第一行,所以如果你有一个由多于 1 行组成的字符串并且你想检查整个字符串(例如,字符串已经从文件加载),您将添加选项 RegexOptions.MultiLine。这样,引擎也会查看其他行。

      希望这对您有所帮助:)

      【讨论】:

        【解决方案4】:

        我相信\b[0-9]{4}\b 应该可以解决问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-21
          • 1970-01-01
          • 2012-06-05
          • 2013-12-25
          • 1970-01-01
          相关资源
          最近更新 更多