我有这个正则表达式(Regex101):
\[quote((?:\s[a-z]+=["'][[:space:]\w]+["'])+)*\](.*?)\[\/quote\]
基本上,这使我可以在BBCode报价标签上添加多个参数,并允许两个捕获:参数(将被切片/分解并格式化)和标签的内容。要获取参数,参数必须在单引号或双引号内。
如何使开头报价必须与封闭报价的类型相同?例如,如果我用双引号打开,当我关闭时,可以只用双引号关闭,不应接受单引号。所有这些都没有捕获它,因为我不想有无用的匹配项。
谢谢,也提供任何改进正则表达式的建议!
答案 0 :(得分:1)
您需要将报价放入组(['"])
或命名为组(?<quote>['"])
的目录中,之后您可以按索引\2
或名称{{ 1}}。请注意,named group syntax可能会有所不同,具体取决于您使用的正则表达式引擎。
示例:
\k<quote>
将匹配^(['"])\w+\1$
但不匹配"abc"