gpt4 book ai didi

php - 正则表达式查找 2 个字符串之间的字符串,这些字符串位于 2 个子字符串不能包含单词的字符串之间

转载 作者:搜寻专家 更新时间:2023-10-31 21:40:02 24 4
gpt4 key购买 nike

我知道我的问题的标题有点复杂,但这基本上是我想做的:

假设我有这段文字:

[table]
[tr]
[td]test str 1[/td]
[td]test str 2[/td]
[/tr]
[/table]

是否有一个正则表达式,可以让我找到:

  • 位于[td] 和[/td] 标签之间的字符串
  • 其中[td]到[/td]的整个部分在[table]和[/table]标签之间
  • 并且[table]和[td]标签之间的文本不能包含[/table]标签
  • 并且[/td]和[/table]标签之间的文本不能包含
    [表格] 标签

这听起来很明显,但它应该是一个安全的正则表达式,因为这个正则表达式将用于处理用户输入,如果用户要在表格外输入 [td](所有标签都转换为 html) ,它可能会影响用于我网站页面布局的表格。

所以它应该首先匹配“test str 1”,然后再匹配“test str 2”,但前提是该字符串在 td 标签内,而 td 标签又应该在 table 标签内,而 td 标签之间可能不匹配另一个表格标签。

这和我得到的一样接近:

/\[table(.*?)\]((?!\[\/table\]).*?)\[td(.*?)\](.*?)\[\/td\]((?!\[table(.*?)\]).*?)\[\/table\]/si

但我认为我在 table 标签不应该存在的部分遗漏了一些东西,所以在 table 和 td 标签之间。

最佳答案

HTML 是上下文无关语言,而正则表达式是针对正则语言的。如果您查看正式语言的乔姆斯基层次结构,您会发现您尝试做的事情不可能以任何可靠的方式完成。

关于php - 正则表达式查找 2 个字符串之间的字符串,这些字符串位于 2 个子字符串不能包含单词的字符串之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com