Php 坚持使用regexp

Php 坚持使用regexp,php,regex,preg-match-all,Php,Regex,Preg Match All,我一直在使用php preg_match_all函数。也许有人会帮我处理regexp。假设我们有一些代码: [a]a[/a] [s]a[/s] [b]1[/b] [b]2[/b] ... ... [b]n[/b] [e]a[/e] [b]8[/b] [b]9[/b] ... ... [b]n[/b] 我需要匹配位于[s]和[e]标记之间的[b]标记中的所有内容。有什么想法吗?单靠正则表达式不足以解析XML,而这似乎是一种简化的XML语言 正则表达式本身不足以解析XML,而这似乎是一种简化的XM

我一直在使用php preg_match_all函数。也许有人会帮我处理regexp。假设我们有一些代码:

[a]a[/a]
[s]a[/s]
[b]1[/b]
[b]2[/b]
...
...
[b]n[/b]
[e]a[/e]
[b]8[/b]
[b]9[/b]
...
...
[b]n[/b]

我需要匹配位于
[s]
[e]
标记之间的
[b]
标记中的所有内容。有什么想法吗?

单靠正则表达式不足以解析XML,而这似乎是一种简化的XML语言

正则表达式本身不足以解析XML,而这似乎是一种简化的XML语言

为了简单起见,使用两个
preg\u match
调用

首先检索要检查的列表
/\[s](.+?)\[e]/s


然后使用该结果字符串并匹配包含的
/\[b](.+?)\[\/b]/s
内容。

为简单起见,请使用两个
preg\u match
调用

首先检索要检查的列表
/\[s](.+?)\[e]/s


然后使用该结果字符串并匹配包含的
/\[b](.+?)\[\/b]/s
内容。

看起来您正在尝试对具有树状结构的内容进行模式匹配,基本上类似于HTML或XML。每当你发现自己说“在匹配的Y标签中找到X”时,你就会遇到这个问题

试图用正则表达式做这种工作是个坏主意

以下是从a复制/粘贴的一些信息:

一些类似SO帖子的参考资料会让你了解你面临的困难:

  • -博宾斯说得比我更透彻(:

“正确的做法”是解析输入,并在运行中保持状态。这可以很简单,只需扫描文本并保留一堆当前标记。

看起来您正在尝试模式匹配具有树状结构的内容,基本上类似于HTML或XML。您可以随时说“查找位于匹配Y标记内的X”您将遇到此问题

试图用正则表达式做这种工作是个坏主意

以下是从a复制/粘贴的一些信息:

一些类似SO帖子的参考资料会让你了解你面临的困难:

  • -博宾斯说得比我更透彻(:

“正确的做法”是解析您的输入,并在运行时保持状态。这可以像扫描文本和保存一堆当前标记一样简单。

如果您的结构与上面的完全相同,我个人会避免使用正则表达式(使用这些语言不是一个好主意)只要检查每一行的第二个字符。一旦你看到一个
s
进入消费模式,直到你看到一个
e
找到第一个
]
并读入从那到下一个
[

之间的所有内容,如果你的结构与上面完全相同,我个人会避免使用正则表达式(使用这些语言不是一个好主意)只需检查每行的第二个字符。一旦你看到一个
s
进入消费模式,直到你看到一个
e
找到第一个
]
,然后读入这一行和下一个
[

之间的所有内容,你是说在两个[s]之间匹配[b]标记的内容吗标记或两个[e]标记,或[s]标记和[e]标记之间?我的意思是和。在上面给出的示例中,结果应该是:1,2,…,您能给出一个示例,说明您希望结果是什么,给出您的输入吗?您是说在两个[s]标记或两个[e]标记之间,或[s]标记和[e]标记之间匹配[b]标记的内容吗标记?我的意思是和。在上面给出的例子中,结果应该是:1,2,…,n你能给出一个例子,说明你希望结果是什么,给出你的输入吗?有什么方法可以一步完成吗?有什么方法可以一步完成吗?