c#用于数字/数字/字符串模式的正则表达式

c#用于数字/数字/字符串模式的正则表达式,c#,regex,C#,Regex,我试图找到{a number}/{a number}/{a string}模式。我可以让number/number工作,但当我添加/string时,它不能工作 我试图找到的示例: 15/00969/FUL 我的正则表达式: Regex reg = new Regex(@"\d/\d/\w"); 完整示例: Regex r = new Regex(@"(\d+)/(\d+)/(\w+)"); string input = "15/00969/FUL"; var m = r.Match(inp

我试图找到
{a number}/{a number}/{a string}
模式。我可以让
number/number
工作,但当我添加
/string
时,它不能工作

我试图找到的示例:

15/00969/FUL
我的正则表达式:

Regex reg = new Regex(@"\d/\d/\w");
完整示例:

Regex r = new Regex(@"(\d+)/(\d+)/(\w+)");

string input = "15/00969/FUL";
var m = r.Match(input);

if (m.Success)
{
    string a = m.Groups[1].Value;   // 15
    string b = m.Groups[2].Value;   // 00969
    string c = m.Groups[3].Value;   // FUL
}

您应该使用
+
,这意味着
1次或多次
,它适用于量词前面的模式,我将添加单词边界
\b
,以仅匹配整个单词:

\b\d+/\d+/\w+\b
C#代码(使用逐字字符串文字,这样我们就可以从测试工具或服务中复制/粘贴正则表达式,而不必逃避反斜杠):

如果要精确计算某个模式对应的字符数,可以使用
{}
s:

\b\d{2}/\d{5}/\w{3}\b
最后,如果字符串中只有字母,可以在C#中使用
\p{L}
(或
\p{Lu}
来仅捕获大写字母):

示例代码(还包括未scaped的
)引入的功能:

var rx=newregex(@“\b(\d{2})/(\d{5})/(\p{L}{3})\b”);
var res=rx.Matches(“15/00969/FUL”)。of type()
.选择(p=>new
{
first_number=p.Groups[1]。值,
第二个\u编号=p.Groups[2]。值,
_字符串=p.Groups[3]。值
}).ToList();
输出:

bool match = new Regex(@"[\d]+[/][\d]+[/][\w]+").IsMatch("15/00969/FUL"); //true

正则表达式:

[\d]+ //one or more digits
[\w]+ //one or more alphanumeric characters
[/]   // '/'-character

您缺少正则表达式中的量词

如果要匹配一个或多个项目,应使用
+
。 如果您已经知道需要匹配的项目数,可以使用
{x}
{x,y}
指定范围(
x
y
为两个数字)

因此,您的正则表达式将变成:

Regex reg = new Regex(@"\d/+\d+/\w+");
例如,如果要匹配的所有元素都具有此格式(
{2位}/{5位}/{3个字母}
),则可以编写:

Regex reg = new Regex(@"\d/{2}\d{5}/\w{3}");
这将匹配
15/00969/FUL


有关正则表达式的更多信息,请参见

您应该在回答中解释这是如何回答问题的。
bool match = new Regex(@"[\d]+[/][\d]+[/][\w]+").IsMatch("15/00969/FUL"); //true
[\d]+ //one or more digits
[\w]+ //one or more alphanumeric characters
[/]   // '/'-character
Regex reg = new Regex(@"\d/+\d+/\w+");
Regex reg = new Regex(@"\d/{2}\d{5}/\w{3}");