正则表达式练习组

山姆·约翰逊

您好再次堆栈溢出。正如我在上一篇文章中提到的那样,我正在尝试使正则表达式更好。今晚我将浏览我的书籍章节,并决定看看是否可以(如果可能)创建多个小组。我完全知道,正则表达式不能解决所有纯粹供我学习的问题。我正在使用VB.net

输入示例:

MyTokenName{%@example1%, %@example2%}
MyTokenName{example1, example2}

现在,这是由我自己制作的要测试的完整内容。此表达式的一致因素是:Name{ }总会有一个仅由a-z一个组成的名称大括号内。分隔两个组的主定界符是,在组开始之前,将有一个以OPTIONAL%@结尾的OPTIONAL%

因此,总而言之,我只想匹配a-z无限次大括号之间定义的组

MyTokenName{%@example%, %@example%} ----- Would match Two groups example1 and example2
MyTokenName{example, example} --- Would match Two groups example1 and example2

我的尝试无效。

(?<=[a-zA-Z]+\{[^[email protected]]+?)[a-zA-Z, ]+(?=%?})

任何建议将是惊人的。谢谢你们这么好的论坛。请记住,我只是想练习正则表达式。我可以使用其他.Net方法执行此操作。

布卡特

一种有趣的方式可能是:

/(?i)(?<=\{|\G|\{%@|\G%@)([a-z0-9]+)(?:%?\s*(?:,\s*|\}))/g

http://regex101.com/r/bU0zY5

这也是它的结构视图:

正则表达式可视化

Debuggex演示

有趣的是,我的意思是lookbehind与\G;)的用法,它应该与您example所有s匹配

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章