regex - VB.NET Review my regex (我自己的学习目的) Trying not be greedy

标签 regex

和上次一样,我首先要说请不要建议其他 Net 方法,因为我想学习正则表达式。这纯粹是为了我自己的学习,所以在这里。

贪婪可能有用,但它并不总是答案,我想这可能会导致 future 的问题和糟糕的结果。以这个示例文本为例,是的,这是我正在玩的一种不寻常的格式

{regex}Hello World GET a1b2c3{regex}

我想要的部分是“a1b2c32”,它只会是一个字母或数字,但总是以 { 结尾并以空格开头。我的第一次尝试是正面看头。

(?<={regex}Hello World  GET )[a-z0-9]+(?={regex})

但后来我努力匹配任何不是大括号的字符

"Hello World  GET [^{]+"

我确实意识到这会捕获我不想要的文本并将其引用到 group1 中。基本上,如果可以的话,我只是在寻找对我的第一个例子的改进。这对我来说都是关于学习和测试的,所以这不是现实生活中的项目。

感谢大家花时间阅读 :)

最佳答案

也许是一个更通用的正则表达式:

[^{ ]+(?={)

regex101 demo

[^{ ]+ 匹配除 { 和空格之外的任何字符,+ 确保至少有一个字符,这样您就不会'匹配字符串开头的空字符串。

积极的前瞻应该不难理解。

关于regex - VB.NET Review my regex (我自己的学习目的) Trying not be greedy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18804657/

相关文章:

nginx 中的正则表达式先行问题

php - 使用 preg_match_all 匹配通配符而不添加到数组中

MySQL 将货币值更新为 'consumer friendly'

php - 如果图像 'alt' 属性为空,如何替换它?

java - 如何替换java字符串中的所有数字

regex - 如何简化此正则表达式以在 Google Analytics 中使用

regex - 从目录/子目录中递归地从文件(带有模式)中提取唯一行

javascript - 现在缺少 g 标志时 matchAll 抛出错误?

正则表达式匹配(如果存在)

regex - 否定 RE2 语法中字符串开头的单词匹配?