我正在尝试使用能够在字符串中找到以下部分的正则表达式。
[TABLE|head,border|{
#TEXT|TEXT|TEXT#
TEXT|TEXT|TEXT
TEXT|TEXT|TEXT
TEXT|TEXT|TEXT
}]
它来自一个简单的自制WYSIWYG编辑器,可以添加表格。但是表的“语法”应该像上面那样简单。
不,因为可能有很多这些表定义,我需要使用php的preg_match_all找到所有这些,以用html中众所周知的<table>
标记替换它们。
正在尝试使用的正则表达式如下:
/\[TABLE\|(.*)\|\{(.*)\}\]/si
由于我的应用程序在Linux上运行,\x0A
保留换行符这样就足够了(使用简单的正则表达式工作正常)。
我使用functions-online.com上的在线正则表达式测试器。
它获得的匹配并不是真的有用。如果我有多个像上面那样的TABLE定义,那么匹配就完全没用了。由于(。*)它涵盖了从“头部,边界”开始到最后一个“|”的所有内容第二个TABLE定义中的字符。
我想获得一个匹配列表,一个接一个地给我一个完整的表命令。
答案 0 :(得分:2)
这是因为默认情况下。*将是一个贪婪的匹配,假设您的代码适用于仅包含单个值的输入。在两个。*之后放置一个问号应该可以防止贪婪成为一个问题。
/\[TABLE\|(.*?)\|\{(.*?)\}\]/si