我的问题的标题有点复杂,我知道,但这基本上就是我想做的事情:
说我有这段文字:
[table]
[tr]
[td]test str 1[/td]
[td]test str 2[/td]
[/tr]
[/table]
是否有正则表达式,允许我找到:
听起来可能很明显,但它应该是一个安全的正则表达式,因为这个正则表达式将用于处理用户输入,并且如果用户要在表外输入[td](所有标签都转换为html) ,它可能会影响用于我网站页面布局的表格。
所以它应该首先与“test str 1”匹配,然后在下一个“test str 2”中匹配,但前提是该字符串在td标记内,而td标记又应该位于表之间的标记之间另一个表标签。
这就像我得到的那样接近:
/\[table(.*?)\]((?!\[\/table\]).*?)\[td(.*?)\](.*?)\[\/td\]((?!\[table(.*?)\]).*?)\[\/table\]/si
但是我觉得我在表标签不应该存在的部分缺少一些东西,所以在表和td标签之间。
答案 0 :(得分:1)
HTML是无上下文语言,而正则表达式是常规语言。如果你看一下正式语言的乔姆斯基层次结构,你会发现你想做的事情是不可能以任何可靠的方式做的。