gpt4 book ai didi

php - 用于匹配模式嵌套的 RegEx

转载 作者:行者123 更新时间:2023-12-04 21:49:10 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do you parse and process HTML/XML in PHP?

(31 个回答)



PHP - get all XML child nodes of a specific type

(1 个回答)


去年关闭。




我需要检测一个标签在另一个标签中的嵌套以引发错误。

例子 :

anything <amb id="1">word1</amb> anything <amb id="2">word2</amb> anything // OK

anything <amb id="1">anything<amb id="2">word2</amb>anything</amb> anything // KO

因此有必要检测标签的存在 <amb...</amb>标签之间 <amb...</amb>
我有一个模式的开头,但我无法管理标签的嵌套存在。
// #\<amb(.*?)\<\/amb\># => OK : detect the first level
$pattern = '#\<amb(?!\<amb)\<\/amb\>#'; // KO

if(preg_match($pattern, $string)) {
throw new Exception('No nested tags are allowed.');
}

我该如何解决这个问题?

最佳答案

检查标签嵌套的一种方法是检查,如果两个连续 <amb标 checkout 现时没有 </amb>标记之间,然后您可以拒绝表示存在标记嵌套的字符串。这种基于负面展望的正则表达式应该可以完成这项工作,

^(?!.*<amb(?:(?!<\/amb).)+<amb).+$

Regex Demo 1

同样,另一种方法是检查两个连续的 <\/amb> 是否连续标 checkout 现时没有 <amb标记介于两者之间,这意味着标记是嵌套的,您可以再次使用此基于负前瞻的正则表达式拒绝该字符串,
^(?!.*<\/amb>(?:(?!<amb).)+<\/amb>).+$

Regex Demo 2

让我知道这是否适合您。

关于php - 用于匹配模式嵌套的 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com