模块 3 · 第 3 课(共 4)课程中的11/32~10 min
模块课程(3/4)
`m` 标志:多行
使用 m (多行)标志,锚点 ^ 和 $ 改变含义:
它们不再是整个字符串的开始/结束,而是整个字符串的开始/结束
每行。一行由 \n 分隔(或由行的开头/结尾)
字符串)。
Code
Pattern: ^Errore
Flag: gm
Sample: Errore: A\nInfo: B\nErrore: C
^^^^^^ ^^^^^^如果没有 m ,它将仅匹配绝对开头的 Errore 。
样本(1 个匹配)。使用 m,它匹配每行的开头 (2
匹配)。
m 不会更改点
常见的混淆:m 标志不会改变点的含义
.。即使使用 m,该点仍然不匹配 \n。来制作点
匹配您需要的所有内容 s 标志(在模块 1 中介绍)。
m 和 s 是正交的:您可以单独使用它们(ms),
或者两者都没有。
多行标志和逐行处理
m 标志修改 ^ 和 $ 的行为,使它们匹配多行文本块中每行的开头和结尾(由 \\n 分隔),而不是仅查看整个字符串的绝对开头和结尾。
尝试一下
锻炼#regex.m3.l3.e1
尝试:0加载中...
找到以“ERROR”开头的每一行。每行之间用 \\n 分隔;使用标志“g”和“m”。
正在加载编辑器...
显示提示
m 标志使 ^ 也匹配内行的开头,而不仅仅是绝对的第一个字符。
3 次尝试后可用的解决方案
复习练习
锻炼#regex.m3.l3.e2
尝试:0加载中...
找到以句点结尾的每一行。使用带有标志“m”和“g”的“$”锚。
正在加载编辑器...
显示提示
带有 gm 标志的 \\.$ 匹配每行末尾的句点,而不仅仅是样本末尾的句点。
3 次尝试后可用的解决方案
额外的挑战
锻炼#regex.m3.l3.e3
尝试:0加载中...
Find all lines in a multiline log that start exactly with the string `ID:` followed by a digit.
正在加载编辑器...
显示提示
在 ID: 之前使用 ^ 并确保 m 标志处于活动状态。
3 次尝试后可用的解决方案