我正在尝试查找{数字} / {数字} / {字符串}
模式。我可以找到数字 / 数字
,但是当我添加/ 字符串
时就不行了。
我正在尝试查找的示例:
15/00969/FUL
我的正则表达式:
Regex reg = new Regex(@"\d/\d/\w");
\b\d+/\d+/\w+\b
C#代码(使用逐字字符串文字,以便我们可以从测试工具或服务中复制/粘贴正则表达式,而不必转义反斜杠):
var rx = new Regex(@"\b\d+/\d+/\w+\b");
如果你想准确地指定与某个模式相对应的字符数,你可以使用{}
:
\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位数字}/{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