正则表达式多行匹配与最小匹配(非贪婪模式)

## 说明 (?s) 一般称为单行模式,意思是:匹配包括\\n在内的所有字符。 (?m) 一般称为多行模式,意思是:更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。 ## 实例 ### 用例代码 ```java public class TestRegular { public static void main(String[] args) { } } ``` ### 多行匹配 #### 正则 ``` (.*)main(?s)(.*\}) ``` #### 匹配结果 ``` public static void main(String[] args) { } } ``` ### 非贪婪模式 正则表达式默认使用贪婪模式,会尽可能多的匹配所搜索的字符串。 当"?"字符紧跟在任何一个其他限制符 (*, +, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串 #### 正则 ``` (.*)main(?s)(.*?\}) ``` #### 匹配结果 ``` public static void main(String[] args) { } ```