正则表达式代码解释

时间:2011-05-09 20:32:05

标签: .net regex

有人可以告诉我这行代码意味着什么,我知道它会查找正则表达式,但我最后并不理解这一点。

System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");

提前致谢。

3 个答案:

答案 0 :(得分:5)

(?<=<Last>)是断言的背后。这意味着只有前面有.*

才匹配<Last>

(?=</Last>)是一个向前看的断言。确保<\Last>

上有.*个关注者

有关.net中正则表达式的更多信息,请参见here on msdn

注释,提供的示例不是完整的代码行(See Class Regex on msdn

这应该是这样的一部分:

Regex MyRegex = new System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");

创建一个新的Regex对象。

另一种可能性是使用正则表达而不创建正则表达式对象,使用静态方法isMatch看起来像这样:

System.Text.RegularExpressions.Regex.IsMatch(StringToSearchIn, "(?<=<Last>).*(?=</Last>)")

返回true或false。

答案 1 :(得分:2)

如前所述,模式(?<=<Last>).*(?=</Last>)匹配<Last>前面的最长文本字符串,后跟</Last>,后跟lookarounds

但请注意,由于greediness,此匹配字符串本身也可以包含<Last>和/或</Last> ...

答案 2 :(得分:1)

它基本上在某些xml文档中查找<Last>标记,包括其内容。

?&lt; =看看断言背后。有关详细说明,请参阅here