Php 带有循环字符或条件的正则表达式
下面是正确的数据样本Php 带有循环字符或条件的正则表达式,php,regex,Php,Regex,下面是正确的数据样本 Hello @[Reda Sel](Native:reda) Hello @[Peter K](Native:123456) 我正在使用这个正则表达式 (\@\[.*?])(\(.*?:.*?\)) 获取数据的方式如下: @[Reda Sel](Native:reda) @[Peter K](Native:123456) 问题是,当输入数据是这样的 Hello @[Reda Sel] Hello. @[Peter K](Native:123456) Testing H
Hello @[Reda Sel](Native:reda) Hello @[Peter K](Native:123456)
我正在使用这个正则表达式
(\@\[.*?])(\(.*?:.*?\))
获取数据的方式如下:
@[Reda Sel](Native:reda)
@[Peter K](Native:123456)
问题是,当输入数据是这样的
Hello @[Reda Sel] Hello. @[Peter K](Native:123456) Testing
Hello @[Reda Sel](Native:reda) Hello @[Peter K](Native:123456)
@[Peter K](Native:123456)
@[Reda Sel](Native:reda)
@[Peter K](Native:123456)
结果是
@[Reda Sel] Hello. @[Peter K](Native:123456)
@[Reda Sel](Native:reda)
@[Peter K](Native:123456)
我需要像上面的例子那样用特定的表达式捕获数据。
但如果数据重复,结果就不会像那样重叠。
结果是这样的
Hello @[Reda Sel] Hello. @[Peter K](Native:123456) Testing
Hello @[Reda Sel](Native:reda) Hello @[Peter K](Native:123456)
@[Peter K](Native:123456)
@[Reda Sel](Native:reda)
@[Peter K](Native:123456)
如果要使用结果值替换数据,请编辑,如
Hello Reda Sel
我应该使用foreach并逐个替换它,还是有其他正则表达式选项
谢谢您的帮助。主要问题是首字母
*?
,我会在这里使用否定字符类
(@\[[^]]*])(\([^:]*:[^)]*\))
如果我想用Hello Reda Sel这样的结果值替换数据,或者有其他方法获取@[…]选择器中的数据,我应该使用foreach吗?如果你想将数据放入,请重新排列捕获组。看这里