php 16位字符串正则,php – 来自字符串的正则表达式顶级内容

请帮忙,我的正则表达能力让我失望.我有以下字符串:

username|email_address|phone_numbers[number]profile[title|addresses[id]]

我希望能够在方括号之间提取任何数据,但不能提取该数据是已提取集的子集的位置.因此,任何嵌套都应保留为父提取字符串的一部分.

在上面的例子中,我提取了两个部分:

"number"

"title|addresses[id]"

请注意如何不提取[id],因为它是较低级别数据集的一部分.

我一直试图用preg_match来做这件事,但我想我可能不得不求助于迭代字符串中的每个字符.

解决方法:

这是一个正则表达式解决方案:

preg_match_all(

'/(?<=\[) # Assert that the previous characters is a [

(?: # Match either...

[^[\]]* # any number of characters except brackets

| # or

\[ # an opening bracket

(?R) # containing a match of this very regex

\] # followed by a closing bracket

)* # Repeat as needed

(?=\]) # Assert the next character is a ]/x',

$subject, $result, PREG_PATTERN_ORDER);

$result = $result[0];

标签:php,regex,preg-match

来源: https://codeday.me/bug/20190928/1825839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值