我正在尝试创建一个正则表达式来匹配“wiki样式”列表,如(使用preg_replace_callback()
):
* List Item 1
* List Item 2
*# List Item 2.1
*# List Item 2.2
* List Item 3
Asterisks表示无序列表,而Number-Signs表示有序列表。我试图得到这个,所以它可以匹配无限深度,以便*和#可以混合。
我尝试了以下表达式(及其变体):/\s([\*#]{1,}) ([\S ]+)\s/si
但似乎并不想工作。
我做错了什么?或者有更好的方法来实现这个目标吗?
答案 0 :(得分:0)
尝试这样的事情:
\s*([*#]+)\s+.*
答案 1 :(得分:0)
不确定我是否理解您的要求,但([*#]{1,}) ([\S ]+)
是否有效?我认为这将为您提供第1组的*
和*#
以及第2组的“列表项2.1”匹配,如果这是您要查找的内容。我知道这基本上就是你所拥有的,但在测试时我没有遇到任何问题。
答案 2 :(得分:0)
正则表达式通常不是递归的。您需要设置更传统的解析方法(可能是使用正则表达式控制转换的嵌套状态机)。
答案 3 :(得分:0)