这个正则表达式意味着什么?

sam*_*old 3 php regex

/\n\s*\n/s
Run Code Online (Sandbox Code Playgroud)

我认为这意味着

  • 一条新线
  • 然后是0或更多的空格
  • 然后是一条新线

这个正确吗?如果没有,你能解释一下吗?

Ada*_*kin 8

几乎正确:\s实际上意味着"任何空白字符",其中还包括制表符和可能的CR/LF(\r\n).

如果您使用的是perl,\s也可以匹配其他一些字符(来自perlre):

如果Unicode生效,"\ s"也匹配"\ x {85}","\ x {2028}和"\ x {2029}"

更多澄清.

  • 由于匹配未锚定(^在开头或$结尾),因此大多数引擎将此表达式视为表示字符串可以匹配字符串中的ANYWHERE.换句话说,正则表达式/cat/将匹配"cat","caterpillar"或"concatenate".所以你的字符串需要包含你描述的内容,但可以加上前缀或后缀.
  • /s在年底一般是指治疗整个字符串作为一个巨大的线.再次,来自perlre:

将字符串视为单行.也就是说,改变"." 匹配任何字符,甚至是换行符,通常它不匹配.

"/ s"和"/ m"修饰符都覆盖$*设置.也就是说,无论$*包含什么,没有"/ m"的"/ s"将强制"^"仅在字符串的开头匹配,而"$"仅在结尾处(或在新行之前)字符串的结尾).和/ ms一起,他们让"." 匹配任何字符,同时仍允许"^"和"$"分别匹配字符串中的换行符之后和之前.