从一行中捕获多组字符

时间:2019-10-17 06:54:32

标签: regex

我需要一行正则表达式来满足捕获0到多个组的需要。这些行始终以单个“ {”开头,然后是一个数字,然后是一个冒号……即以正则表达式表示的{%d:,然后继续捕获,直到其碰到右花括号}

下面是一些示例行:

{1:23842039423409} 
{2:JSHDF98343SSDSDASASDSASDSAD993}{1:JSHDF98343993}
{2:JSHDF98343993}{1:23842039423409}{1:BLHASD9293}
{2:{JSHDF98343993}{1:23842039423409}{1:BLHASD9293}
{4missing_colon_not_to_be_captured}
{missing_number_not_to_be_captured}{2:CAPTURE_THIS}
  • 第1行应捕获1组,
  • 第2行应捕获2个组,
  • 第3行应捕获3个组,
  • 第4行应捕获3个组,
  • 第5行没有捕获任何内容,
  • 第6行有1个被捕获的组。

通过对多个组重复使用正则表达式,我得到了几乎可以起作用的东西,但认为这样做不是正确的方法,但是正在努力了解如何使其完全起作用。

([{%d:][^}]*})([{%d:][^}]*})

将捕获在一行上要捕获两个以上事物的组,但是显然只会捕获前2个组,即第2行中的2个组,第3行中的前2个组(但第3个组则没有) ),第4行中的前2个组(而不是第3组),等等。

我尝试了其他几种尝试,但均未成功。感谢帮助!

1 个答案:

答案 0 :(得分:1)

尝试一下

{\d:.+?}

请参见https://regexr.com/4n0l1上的说明