Php 正则表达式有问题(非通缉端)

Php 正则表达式有问题(非通缉端),php,regex,Php,Regex,我有以下模式: (name|id)\s*=\s*('|")([a-zA-Z\-\_])+('|") 我必须获得所有属性name=“a”或id=“ab_c”,它们没有结构name=“a-element”或id=“a-element”(以-element结束),我尝试了: (name|id)\s*=\s*('|")([a-zA-Z\_][^-element])+('|") 但是它不起作用,错误是什么???你想要的,像这样: (name|id)\s*=\s*('|")([a-zA-Z\-_](?!

我有以下模式:

(name|id)\s*=\s*('|")([a-zA-Z\-\_])+('|")
我必须获得所有属性name=“a”id=“ab_c”,它们没有结构name=“a-element”id=“a-element”(以-element结束),我尝试了:

(name|id)\s*=\s*('|")([a-zA-Z\_][^-element])+('|")
但是它不起作用,错误是什么???

你想要的,像这样:

(name|id)\s*=\s*('|")([a-zA-Z\-_](?!-element))+('|")

(但请记住,您可能不应该手动解析XML。)

此字符串是某些XML或HTML的一部分吗?如果是这样,不要用正则表达式()解析它。相反,请使用
domeElement
()(或另一个XML解析器)。