(?<=atr1=").*(?=")
<h1 atr1="test1" atr2="test2"
我期待正则表达式在 atr1 中获取值,但它获取的值远不止于此。它在 test2 后停在双引号?
使用惰性修饰符*?
在第一个双引号处停止:
(?<=atr1=").*?(?=")
在线演示
PS:我还删除了不严格需要的双引号的转义(除非您必须使用双引号字符串(
如果你想抓住
test1
从
<h1 atr1="test1" atr2="test2"
然后:
atr1="([^"]+)"
将捕获它。
使用否定正则表达式并避免向前看:
(?<=atr1=")[^"]+
正则表达式演示
但是,如果您使用的是PHP,Python等语言,那么我建议完全避免正则表达式,而是使用内置的DOM解析器。