如何解决这个正则表达式是什么意思?
|/\\n\\s*\\n/s
我认为这意味着
新线
后跟0个或多个空格
然后换一行
这个正确吗?如果没有,您能解释一下吗?
解决方法
几乎是正确的:“ 1”实际上是指“任何空白字符”,其中还包括制表符,还可能包括CR / LF(2和3)。
如果您使用的是perl,则
\\s
也可能与其他字符匹配(来自perlre):
如果Unicode有效,则\“ \\ s \”也匹配\“ \\ x {85} \”,\“ \\ x {2028}和\” \\ x {2029} \“
还有更多澄清。
因为匹配项不是固定的(开始时是5英镑,在末尾是6英镑),所以大多数引擎都将此表达式视为字符串可以匹配字符串中的任何内容。换句话说,正则表达式“ 7”将匹配\“ cat \”,\“ caterpillar \”或\“ concatenate \”。因此,您的字符串需要包含您所描述的内容,但是可以由其他任何内容作为前缀或后缀。
最后的/s
通常意味着将整个字符串视为一条巨型线。再次,从perlre:
将字符串视为单行。也就是说,更改\“。\”以匹配任何字符,即使是换行符也通常不匹配。
\“ / s \”和\“ / m \”修饰符都覆盖$ *设置。也就是说,无论$ *包含什么内容,不带\“ / m \”的\“ / s \”都将强制\“ ^ \”仅在字符串的开头匹配,而\“ $ \”仅在字符串的开头匹配字符串的结尾(或结尾处的换行符之前)。它们以/ ms的形式一起使\“。\”匹配任何字符,同时仍允许\“ ^ \”和\“ $ \”分别在字符串中换行符之后和之前匹配。
, 错误。 \\s
是任何空格字符,而不仅仅是空格。
, 您的假设大多数是正确的,只有一项更改,一项遗漏。
首先,正如其他人所说的,“ 1”表示任何空格,而不仅仅是“空格”。
另外,结尾的“ 11”表示正则表达式处于“单行模式”,这表示“ 12”(点)将与换行符匹配。换句话说,传递给此正则表达式的任何内容都将被解析为单行输入,无论它是否具有换行符(它们都将显示为另一个特殊字符,如\\n
或\\r
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。