匹配正则表达式模式...使用c#

时间:2015-10-16 15:33:06

标签: c# regex

我有以下内容,我已经概述了哪些通过,哪些失败了:

    Regex regex = new Regex(@"^\d\b.\d\s\b(Chapter)\b\s\d"); 
        var tru = regex.IsMatch("3.2 Chapter 23");//passed
        tru = regex.IsMatch("3.1 Chapter 1");//passed
        tru = regex.IsMatch("32.1 Chapter 1");//failed
        tru = regex.IsMatch("3.31 Chapter 1");//failed
        tru = regex.IsMatch("33.3 Chapter 13");//failed
        tru = regex.IsMatch("32.23 Chapter 13");//failed

我的字符串的正确格式应为:

以1到3位数字开头,然后是“。”,然后是1到3位数字,然后是“。”。然后是一个空格“”然后单词“Chapter”然后是一个空格“”然后是另一个1到3位数字

我正在使用.Net 4.5

所以所有6应该通过我的例子应该通过。快到了。我的正则表达式中缺少什么?提前谢谢。

4 个答案:

答案 0 :(得分:2)

根据您的描述,您的样品都不应通过:

  

以1到3位数字开头,然后是"。"然后是1到3位数字,然后是"。"

您的要求总共为.两个。你的样本都没有。

如果您希望自己的样品通过.,那么您需要寻找:

^\d{1,3}\.\d{1,3} Chapter \d{1,3}

使用\d

{1,3}的要求设置为一到三位数

如果您 需要额外的.,请相应添加另一个\.(并更改您的样本以匹配)

答案 1 :(得分:1)

您的问题是\d匹配一位数。将其替换为\d+以匹配一个或多个数字:

^\d+\b.\d+\s\b(Chapter)\b\s\d+

或者,如果您想将其限制为1到3位,请使用{1,3}

^\d{1,3}\b.\d{1,3}\s\b(Chapter)\b\s\d{1,3}

以下是它的工作原理:https://regex101.com/r/dO7tU9/1

答案 2 :(得分:1)

^ \ d {1,3}。\ d {1,3} \ S(章)\ S \ d {1,3} $

这个正则表达式声明:

任何十进制数字{恰好1到3次}。任何十进制数字{正好1到3次}空格(章节)空白任何十进制数字{完全1到3倍}全局

答案 3 :(得分:1)

以下正则表达式符合您的要求:

^ \ d {1,3}。\ d {1,3} \ sChapter \ S \ d {1,3} $