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}");