Regex查找某些代码之间的文本


Regex to find the text between certain code

我的文字是这样的;

[name]JAAN JOHN[/name]
[cell]09178656469[/cell]
[city]Dhaka[/city]

我想使用正则表达式在上面每个[ ]引号之间获取文本。请原谅我,因为我搜索了很多这个网站,但无法得到我所需的答案。请帮助!

编辑:

例如,我想得到这样的结果:

Name: JAAN JOHN
Cell #: 09178656469
City: Dhaka

如何得到这个结果?

使用反向引用,从索引2中获得匹配的组。在下面的示例代码中,我对cell标签

感兴趣
'[(cell)'](.*?)'['/'1']

这里是demo


如果您对与结束标签匹配的的所有标签感兴趣,请尝试

'[(.*?)'](.*?)'['/'1']

这里是demo

从索引1中获取所需的标签名,从索引2中获取所需的值。

示例代码:

$re = "/''[(.*?)''](.*?)''[''/''1'']/";
$str = "[name]JAAN JOHN[/name]'n[cell]09178656469[/cell]'n[city]Dhaka[/city]";
preg_match_all($re, $str, $matches);

此正则表达式将用于每行。

'[[^']]+'](.*?)'['/[^']]+']

使用前向和后向断言

((?<=]).*(?='['/))

参见这个演示