Dou*_*aye 8 regex quotes preg-match
我在编写一个正则表达式(适用于PHP的preg_match())时遇到问题,它将解析keyword ='value'对,无论<value>字符串是用单引号还是双引号括起来.IOW在以下两种情况下我都需要获取<name>和<value>,其中<value>字符串可能包含非封闭类型的引号:
name="value"
name='value'
Run Code Online (Sandbox Code Playgroud)
Cop*_*pas 14
在Perl中,这是一个可行的正则表达式.它首先匹配行的开头,然后匹配一个或多个非=字符并将它们设置为$ 1.接下来它查找=然后是非括号,可以选择匹配"或"并将其设置为$ 2.
/^([^=]+)=(?:"([^"]+)"|'([^']+)')$/
Run Code Online (Sandbox Code Playgroud)
如果你想让它匹配像空白的表达式.
这=""
将最后两个+替换为*否则这应该有效
编辑 正如评论中所述.道格用过......
/^\s?([^=]+)\s?=\s?("([^"]+)"|\'([^\']+)\')\s?/
Run Code Online (Sandbox Code Playgroud)
这将匹配输入或值的以太端上的一个可选空格,并且已删除行结束标记.