我正在寻找一个正则表达式,该表达式定位任何名为attrName
的HTML属性,以便我可以将其替换为attr
但仅在<Highlight></Highlight>
个标记内。
我要定位的一个例子是:
<Highlight attrName="html">
{'
<div attrName="input action">
\n\t<input type="text" name="name" placeholder="Search..."/>
\n\t<a attrName="button outlined">Search</a>
\n</div>
'}
</Highlight>
到目前为止,我刚刚提出了正则表达式<Highlight\s*(attrName)\s*
,但它只针对<Highlight attrName
答案 0 :(得分:1)
除了用正则表达式解析这样的代码并不总是一个好主意之外,你可能需要比Atom编辑器提供的更强大的正则表达式。如何支持PCRE Notepad++。
在这里,您可以从开始或某个点使用\G
anchor to chain matches。
(?s)(?:<Hi[^>]*>|\G(?!^))(?:(?!</Hi).)*?\KattrName
(?s)
flag是为了使点也与换行符匹配。(?:<Hi[^>]*>|\G(?!^))
non capturing group内的第一部分是设置匹配开始的位置。如果没有(?!^)
否定lookahead \G
也会匹配字符串的开头。(?:(?!</Hi).)*?
第二部分匹配任意数量的字符,而不是在</Hi
之前使用否定前瞻和reset the match by use of \K
来跳过attrName
。答案 1 :(得分:0)
这将找到属性:(?<=<[^<]+)attrName(?=\s*=[^>]+>)
这将找到属性出现的HTML标记:<[^<]+attrName\s*=[^>]+>