正则表达式之Multiline和Dotall模式

 一直以来把Multiline和Dotall模式混淆了,奇怪怎么一直都没有出问题?人品?
不过出来混老是要还的, 今天和一个同事讨论一个正则表达式终于"出丑"了.而后才把两者搞清楚.

* multiline
若是regexp里出现了^或者$, 那么by default只会匹配第一行. 设置了Multiline,会匹配全部行.
好比正则表达式

  • regexp: /^.*AAA.*$/
  • src: "abcBBBdef\nsdfAAAfff\nsdf"
  • without Multiline: 匹配失败
  • with Multiline: 匹配成功


全部, 在regexp里出现了^$, Multiline才有意思, 不然是没有意义的.

* dotall
默认状况下, .不会匹配换行符, 设置了Dotall模式, .会匹配全部字符包括换行符
好比ide

  • regexp: /BBB.*AAA/
  • src: "abcBBBdef\nsdfAAAfff\nsdf"
  • without Dotall: 匹配失败
  • with Multiline: 匹配成功
相关文章
相关标签/搜索