gpt4 book ai didi

regex - 禁止带有属性的 BBCode 标签中的空内容

转载 作者:行者123 更新时间:2023-12-05 00:10:41 26 4
gpt4 key购买 nike

我有这个正则表达式:

\[code(?:=(["']?)(.{0,50}?)\1)?\](?!\s*\[\/code\])(.*?)\[\/code\]

这个正则表达式应该支持:

[code]content[/code]
[code=Title]content[/code]
[code="Title"]content[/code]
[code='Title']content[/code]

空内容 [code][/code] 是不允许的,这要归功于:

(?!\s*\[\/code\])

也不允许带有标题 [code=Title][/code] 的空内容,并且上面的非捕获组也适用于该条件,直到我不将两个标签插入在一起:

[code="title"][/code]
[code][/code]

我怎么能不匹配正则表达式的最后一个条件?
最好在此处观察问题:https://regex101.com/r/J1dwJa/2/

据我了解,正则表达式的这一部分会产生问题:

(["']?)

我使用量词是为了支持模式 [code=Title][/code]。至少我认为这个正则表达式需要的是当它遇到 ] 时应该停止而不是继续。我正在尝试,但我没有找到我的基本正则表达式知识的任何路径。

最佳答案

你应该关心两件事:

  1. . 会比需要的匹配更多

  2. 在查找结束 [/code]

  3. 时,您不应匹配内容部分中的 [/code]
\[code(?>=(["']?)([^][]*)\1)?](?:(?!\s*(\[\/code])).)+(?3)

参见 live demo here

关于regex - 禁止带有属性的 BBCode 标签中的空内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56616249/

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