Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有循环字符或条件的正则表达式_Php_Regex - Fatal编程技术网

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吗?如果你想将数据放入,请重新排列捕获组。看这里