正则表达式可以捕获子字符串而不使用组吗?

时间:2010-01-02 19:28:59

标签: .net regex

正则表达式foo/(\w*)/bar匹配字符串foo/123/bar

这可能是我错过了正则表达式的基本内容,但通常我只想检索斜杠之间的子字符串。是否有一个简单的.NET API我可以使用而无需访问groups集合?还是另一种编写正则表达式的方法?

谢谢!

3 个答案:

答案 0 :(得分:2)

可以使用环视:

(?<=foo/)\w*(?=/bar) 

应用于foo / 123 / bar。匹配“123”。 群组是一种更好的方法,请记住,所有正则表达式工具都不支持环视(特别是后面看),但它位于.net。

注意:\ w是字符类的简写,您不需要将其放在[]

答案 1 :(得分:1)

简短的回答是否定的,但获得捕获真的没有麻烦:

string cap = Regex.Match(inputString, @"foo/(\w*)/bar").Groups[1].ToString();

答案 2 :(得分:0)

如果保证字符串匹配,并且您只想要两个斜杠之间的子字符串,则可以使用String.Split代替正则表达式:

String sub = str.Split('/')[1]