Skip to main content
 首页 » 编程设计

c#之标签之间的正则表达式匹配文本

2024年01月29日27bjzhanghao

我需要正则表达式方面的帮助,因为我不太了解它。

我的正则表达式为:

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 

有一些有用的交互式工具可以玩这些变体: