正則表達式之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: 匹配成功
相關文章
相關標籤/搜索