/\n\s*\n/s
我认为它的意思是
- 一个新行
- 紧接着0个或多个空格
- 然后是另一行
这样正确吗?如果不是,你可以解释一下吗?
\s
实际上意味着“任何空白字符”,包括制表符和可能的 CR/LF(\r
和 \n
)。\s
也可能匹配其他一些字符(来自 perlre):^
或在结尾的 $
),大多数引擎将此表达式视为字符串可以匹配到字符串中的任何位置。换句话说,正则表达式 /cat/
将匹配 "cat"、"caterpillar" 或 "concatenate"。因此,您的字符串需要包含您描述的内容,但可以由其他任何内容前缀或后缀。
- 结尾的 /s
通常意味着将整个字符串视为一个巨大的行。同样来自 perlre:不对。 \s
包括任何空白字符,而不仅仅是空格。
你的假设大部分是正确的,只有一个更改和一个省略。
首先,正如其他人所说,\s
表示任何空白字符,而不仅仅是 "空格"。
此外,尾随的 s
意味着正则表达式处于 "单行模式",这意味着 .
(点)将匹配换行符。换句话说,无论输入是否有换行符(它们将显示为另一个特殊字符,例如 \n
或 \r
),传递给此正则表达式的任何内容都将被解析为单个输入行。