Php 坚持使用regexp
我一直在使用php preg_match_all函数。也许有人会帮我处理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
[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你能给出一个例子,说明你希望结果是什么,给出你的输入吗?有什么方法可以一步完成吗?有什么方法可以一步完成吗?