正则表达式也不像我预期的那样工作,正则表达式有问题

  • 本文关键字:正则表达式 工作 有问题 regex
  • 更新时间 :
  • 英文 :

(?<=atr1=").*(?=")
<h1 atr1="test1" atr2="test2"

我期待正则表达式在 atr1 中获取值,但它获取的值远不止于此。它在 test2 后停在双引号?

使用惰性修饰符*?在第一个双引号处停止:

(?<=atr1=").*?(?=")

在线演示

PS:我还删除了不严格需要的双引号的转义(除非您必须使用双引号字符串(

如果你想抓住

test1

<h1 atr1="test1" atr2="test2"

然后:

atr1="([^"]+)"

将捕获它。

使用否定正则表达式并避免向前看:

(?<=atr1=")[^"]+

正则表达式演示

但是,如果您使用的是PHP,Python等语言,那么我建议完全避免正则表达式,而是使用内置的DOM解析器。

最新更新