正则表达式以匹配由空格分隔且内容中也有空格的选项
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?
这匹配 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+='[^']*'
见regex demo。 详情:
\w+
- 一个或多个字母、数字或下划线
='
- ='
字符串
[^']*
- '
以外的零个或多个字符
'
- 一个 '
字符。
我正在解析一个 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+='[^']*'
见regex demo。 详情:
\w+
- 一个或多个字母、数字或下划线='
-='
字符串[^']*
-'
以外的零个或多个字符
'
- 一个'
字符。