正则表达式以匹配由空格分隔且内容中也有空格的选项

Regexp to match options which are delimited by spaces and also have spaces in their content

我正在解析一个 Wordpress 短代码并想使用 PCRE 主要是为了最终理解它。

以下简码是我要解析的简码:

[testing att1='hello' att2='hello again' att3='£100']

我当前的正则表达式是:

\s?([a-z0-9_]*='[[:graph:]\£]*')\s?

这匹配 att1att3 但不匹配 att2 因为它里面有空格。但是,当我将正则表达式修改为:

\s?([a-z0-9_]*='[[:graph:]\s\£]*')\s?   --- note the '\s' after [:graph:]

它完全匹配从 'att1' 到 'att3',即 att1='hello' att2='hello again' att3='£100'。我如何匹配 att2 以包含空格并保留空格是分隔符的事实。

我认为我的问题是我如何说明该组是如何终止的但不确定!

如果你想匹配带有单引号参数的属性,你可以使用

\w+='[^']*'

regex demo详情:

  • \w+ - 一个或多个字母、数字或下划线
  • =' - =' 字符串
  • [^']* - '
  • 以外的零个或多个字符
  • ' - 一个 ' 字符。