2011-09-21 55 views
1

我有以下模式:用正则表达式(非想结束)的问题

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

我必须获得所有属性名=“一个”ID =“ab_c”这不具有结构名称= “一个元件”ID = “一个元件”(饰面与- 元素),我试图与:

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

但它不起作用,错误是什么?

+0

是一些XML或HTML的这个字符串的一部分?如果是这样,不要用正则表达式解析它(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。相反,使用'DOMElement'(http://php.net/manual/en/class.domelement.php)(或另一个XML解析器)。 – 2011-09-21 16:25:46

回答

3

你想negative look-arounds,像这样:

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

(但请记住,你可能根本不应该手工解析XML。)