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

标签 c# regex

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

我的正则表达式为:

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/

相关文章:

mysql - 删除 MySQL 中的非字母数字

regex - 如何从 Google 搜索结果页面 URL 中提取关键字?

c# - DLL中没有可以放在工具箱上的组件

c# - NHibernate 错误 - "could not initialize a collection"

javascript - 将 JSON 对象的字段转换为标题大小写

python - 使用 python 正则表达式模块处理带重音的 Unicode 字符

c# - 如何使用 C# 检索网页?

c# - 将图像从 C++ 进程发送到 C# 进程

c# - UWP 闪烁文本

regex - 用于匹配美国电话号码格式的 Oracle 正则表达式