我在编写正则表达式(适用于 PHP 的 preg_match())时遇到问题,无论 <value> 字符串是用单引号还是双引号括起来,它都会解析关键字='value' 对。IOW 在以下两种情况下,我需要获取 <name> 和 <value> ,其中 <value> 字符串可能包含非封闭类型的引号:
name="value"
name='value'
我在编写正则表达式(适用于 PHP 的 preg_match())时遇到问题,无论 <value> 字符串是用单引号还是双引号括起来,它都会解析关键字='value' 对。IOW 在以下两种情况下,我需要获取 <name> 和 <value> ,其中 <value> 字符串可能包含非封闭类型的引号:
name="value"
name='value'
在 Perl 中,这是一个可以工作的正则表达式。它首先匹配行首,然后匹配一个或多个非 = 字符并将它们设置为 $1。接下来,它查找=,然后查找a 非括号,并选择匹配" 或' 并将其设置为$2。
/^([^=]+)=(?:"([^"]+)"|'([^']+)')$/
如果您希望它匹配空白表达式,例如。
这=“”
用 * 替换最后两个 + 否则应该可以
编辑 如评论中所述。道格用...
/^\s?([^=]+)\s?=\s?("([^"]+)"|\'([^\']+)\')\s?/
这将匹配输入或值的以太网端的一个可选空格,并且他已删除行尾标记。
/^(\w+?)=(['"])(\w+?)\2$/
这将把键$1
和值放在$3
.