我需要正则表达式方面的帮助,因为我不太了解它。
我的正则表达式为:
Regex myregex = new Regex("testValue=\"(.+?)\"");
(.+?) 表示什么?
它匹配的字符串是"testValue=123e4567"
并返回123e4567
作为输出。
现在我需要正则表达式方面的帮助来匹配字符串 "<helpMe>123e4567</helpMe>"
,我需要 123e4567 作为输出。如何为其编写正则表达式?
最佳答案
这意味着:
( Begin captured group
. Match any character
+ One or more times
? Non-greedy quantifier
) End captured group
对于您的正则表达式,非贪婪量词 ?
意味着您捕获的组将在第一个双引号之后开始,然后在它遇到的下一个双引号之前立即结束.如果它是贪婪的(没有 ?
),该组将扩展到它在该行遇到的最后双引号(即“贪婪地”消耗尽可能多的线尽可能)。
对于您的“helpMe”示例,您需要此正则表达式:
<helpMe>(.+?)</helpMe>
给定这个字符串:
<div>Something<helpMe>ABCDE</helpMe></div>
你会得到这个匹配项:
ABCDE
非贪婪量词的值(value)在这个变体中是显而易见的:
Regex: <helpMe>(.+)</helpMe>
String: <div>Something<helpMe>ABCDE</helpMe><helpMe>FGHIJ</helpMe></div>
贪婪捕获看起来像这样:
ABCDE</helpMe><helpMe>FGHIJ
有一些有用的交互式工具可以玩这些变体:
关于c# - 标签之间的正则表达式匹配文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879149/