有人可以告诉我这段代码的含义是什么,我知道它寻找正则表达式,但我不明白最后一点。正则表达式代码解释
System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
在此先感谢。
有人可以告诉我这段代码的含义是什么,我知道它寻找正则表达式,但我不明白最后一点。正则表达式代码解释
System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
在此先感谢。
(?<=<Last>)
是一个背后的断言。这意味着它仅在前面有<Last>
时才与.*
匹配
(?=</Last>)
是前瞻断言。确保有以下<\Last>
.*
有关.net中正则表达式的更多信息,请参见here on msdn。
注释,所提供的示例不是代码的完整线(See Class Regex on msdn)
这应该是这样的东西的一部分:
Regex MyRegex = new System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
,创建一个新的Regex对象。
另一种可能性是使用正则表达式,而无需创建regex对象,看起来像这样用静态方法isMatch
:
System.Text.RegularExpressions.Regex.IsMatch(StringToSearchIn, "(?<=<Last>).*(?=</Last>)")
这将返回true或false。
它基本上在寻找包含其内容的xml文档中的<Last>
标签。
? < =是断言的背后。有关详细说明,请参见here。
如前所述,模式(?<=<Last>).*(?=</Last>)
匹配以<Last>
开头的文本的最长字符串,后跟</Last>
,用正数lookarounds表示。
不过请注意,这是由于greediness,这个匹配的字符串本身也包含<Last>
和/或</Last>
...没有选择答案
五个问题?选择一些问题的答案可能有助于您在这里获得答案的机会。 – 2011-05-09 20:35:15
为什么这个问题被标记为SQL? – janhink 2011-05-09 20:35:22
从代码中的标识符判断,它看起来像是针对.NET而不是SQL。也就是说,这行代码不会在我知道的任何.NET语言中编译... – 2011-05-09 20:39:17