[英]c# regex for number/number/string pattern
我试图找到{a number} / { a number } / {a string}
模式。 我可以得到number / number
,但是当我添加/ string
它没有。
我想要找到的例子:
15/00969/FUL
我的正则表达式:
Regex reg = new Regex(@"\d/\d/\w");
你应该使用+
quantier ,意思是1 or more times
,它适用于量词之前的模式,我会添加单词边界\\b
只匹配整个单词:
\b\d+/\d+/\w+\b
C#代码(使用逐字字符串文字,这样我们就可以从测试工具或服务中复制/粘贴正则表达式而不必转义反斜杠):
var rx = new Regex(@"\b\d+/\d+/\w+\b");
如果要精确确定某些模式对应的字符数,可以使用{}
s:
\b\d{2}/\d{5}/\w{3}\b
最后,如果字符串中 只有字母,则可以在C#中使用\\p{L}
(或\\p{Lu}
仅捕获大写字母)速记类:
\b\d{2}/\d{5}/\p{L}{3}\b
示例代码(还包括使用非转义(
和)
引入的捕获组 ):
var rx = new Regex(@"\b(\d{2})/(\d{5})/(\p{L}{3})\b");
var res = rx.Matches("15/00969/FUL").OfType<Match>()
.Select(p => new
{
first_number = p.Groups[1].Value,
second_number = p.Groups[2].Value,
the_string = p.Groups[3].Value
}).ToList();
输出:
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
}
您缺少正则表达式中的量词
如果你想匹配一个或多个项目,你应该使用+
。 如果您已经知道需要匹配的项目数,可以使用{x}
或{x,y}
指定范围( x
和y
是两个数字)
所以你的正则表达式会成为:
Regex reg = new Regex(@"\d/+\d+/\w+");
例如,如果您要匹配的所有元素都具有此格式( {2 digit}/{5 digit}/{3 letters}
),您可以写:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.