3月302016
au3 正则参考 -43-多行模式
<!DOCTYPE html>
多行模式: (?m)
选项使正则表达式引擎能够处理由多个行组成的输入字符串. 它更改了 ^ 和 $ 语言元素的解释, 以使它们分别与每行的开头和结尾匹配, 而不只是与输入字符串的开头和结尾匹配.
默认情况下, $ 仅与输入字符串的末尾匹配. 如果指定了 (?m) 选项, 它将与换行符 (\n) 或输入字符串的末尾匹配. 但并不与回车符/换行符的组合 \如\n 匹配. 若要成功匹配它们, 使用子表达式 \r?$ 替代 $.
下面的示例提取投手的姓名和分数. 测试两个匹配方法.
第 1 方法调用正则表达式 ^(\w+)\s(\d+)$, 且没有设置任何选项. 因为正则表达式引擎与输入模式及输入字符串的开头和结尾均不匹配, 因此没有找到匹配.
第 2 方法调用正则表达式更改为 (?m)^(\w+)\s(\d+)$, 选项设置为 (?m) , 姓名和分数成功匹配.
字符串:
Joe 164
Sam 208
Allison 211
Gwen 171
表达式: (?m)^(\w+)\s(\d+)$
匹配结果(标志 4):
[0]=> [0]Joe 164
[1]=> [0]Sam 208
[2]=> [0]Allison 211
[3]=> [0]Gwen 171
表达式分析:
模式 | 说明 |
---|---|
(?m) | 匹配多个回车符. 否则正则表达式将提示输入字符串没有匹配项. |
^ | 因为选项 (?m) 的存在, ^ 可以从每行的开头开始匹配. |
(\w+) | 匹配一个或多个单词字符. 这是第一个捕获组. |
\s | 与空白字符匹配. |
(\d+) | 匹配一个或多个十进制数字. 这是第二个捕获组. |
$ | 因为选项 (?m) 的存在, $ 可以从每行的尾部结束一轮匹配. |
扫描二维码,在手机上阅读
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!