【发布时间】:2021-08-31 05:19:59
【问题描述】:
我正在解析一个 Wordpress 短代码,并希望主要使用 PCRE 以最终了解它。
以下短代码是我希望解析的:
[testing att1='hello' att2='hello again' att3='£100']
我目前的正则表达式是:
\s?([a-z0-9_]*='[[:graph:]\£]*')\s?
这匹配att1 和att3,但不匹配att2,因为其中包含空格。但是,当我将正则表达式修改为:
\s?([a-z0-9_]*='[[:graph:]\s\£]*')\s? --- note the '\s' after [:graph:]
它完全匹配从“att1”到“att3”,即att1='hello' att2='hello again' att3='£100'。如何匹配 att2 以包含空格并保留空格是分隔符这一事实。
我认为我的问题是我如何说明该组如何终止但不确定!
【问题讨论】:
-
也许您只需要
\w+='[^']*'?见regex101.com/r/F2naVc/1 -
谢谢。请添加为答案,我会接受!有一件事让我思考。为什么我们必须说“不要匹配撇号”,如果它最终会匹配(假设我已经理解了语法)
-
我不明白你的意思,最后的
'与模式中的最后一个'匹配。 -
是的 - 对不起!
[^']匹配除撇号之外的任何内容 - 不是“不匹配撇号”(!)。在过去的 24 小时内,我一直在查看很多正则表达式。过了一会儿,一切都变得模糊了……
标签: pcre