我有一些这样的文本,它是用自定义的 Markdown 样式格式编写的。例如:
[Lorem ipsum]
Dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
[Ut wisi]
[Enim ad minim veniam](a), quis nostrud exerci tation ullamcorper.
suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat.
Vel illum dolore eu feugiat nulla facilisis at vero.
[Ros et accumsan et iusto odio dignissim](b) qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
[[Nam liber]](c)
Tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
正如您所看到的,标题周围有方括号,并且有方括号后跟包含一个字母的括号,这是我试图与正则表达式匹配的内容。我正在尝试使用的正则表达式是这样的:
preg_match_all("#\[(.*?)\]\(([a-z]+)\)#is",$html,$matches)
这个 ^ one 的问题是它从 [Lorem ipsum] 匹配到 (a) 的末尾。
我也可以使用以下内容,但是我需要能够包含带有方括号的标题,因此这不能正常工作:
preg_match_all("#\[([^]]+)\]\(([a-z]+)\)#is",$html,$matches)
经过一番阅读,我怀疑我需要的是前瞻,但是我无法理解它们。非常感谢任何帮助。
澄清
我基本上希望能够用方括号/括号组合包装一些文本的任何部分,然后能够将它们与正则表达式匹配,而不会在任何地方导致冲突的现有方括号。示例文本:
[[Lorem ipsum]](a)
Dolor sit amet, [consectetuer adipiscing elit](b), sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
期望的匹配:
[[Lorem ipsum]](a)
[consectetuer adipiscing elit](b)
或者……更复杂
[[Lorem ipsum]
Dolor sit amet, sed diam nonummy nibh euismod](a) tincidunt ut laoreet dolore magna aliquam erat volutpat.
期望匹配:
[[Lorem ipsum]
Dolor sit amet, sed diam nonummy nibh euismod](a)
可能吗?