VB.NET检查我的正则表达式(供我自己学习使用)。尽量避免过度匹配。

3

像上次一样,我想说请不要建议其他的网络方法,因为我想学习正则表达式。这纯粹是为了我的自我学习,下面开始。

贪婪可能有效,但并不总是正确的答案,我猜会导致未来的问题和不良结果。看看这个例子文本,是一个不寻常的格式,我只是在玩而已。

{regex}Hello World GET a1b2c3{regex}

我需要的部分是"a1b2c32",它只能是字母或数字,但始终以空格开头和以 { 结尾。我的第一次尝试是正向前瞻。

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

但是我考虑匹配任何不是花括号的字符。
"Hello World  GET [^{]+"

我知道这段代码会捕获我不想要的文本并将其引用到 group1 中。基本上,我只是想改进我的第一个示例,如果可能的话。对我来说,这一切都关乎学习和测试,所以这不是真正的实际项目。

非常感谢各位抽出时间阅读 :)


1
您可以用括号捕获感兴趣的部分。 - Explosion Pills
我知道你正在学习,但是你提出了几个一般性的问题。表面上看,你只想要\s([a-z0-9]+){,使用分隔符\s-{。然而,正则表达式的形式可能会因为你理论上想要什么而有所不同。 - user557597
2个回答

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

[^{ ]+(?={)

regex101演示

[^{ ]+ 匹配除了 { 和空格之外的任何字符,+ 确保至少匹配一个字符,以便不会在字符串开头匹配空字符串。

正向预查不难理解。


0
根据问题描述,我认为这已经足够了:
[a-z0-9]+(?=\{)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接