爱,就疯狂。两个人撑起所有梦想。 不爱,就坚强。一个人扛下所有的伤。 收藏本站
登陆 / 注册 搜索

阅读:2.1K   回复: 1

php 正则匹配行头 ^ 问题

[复制链接]
小执念 古黑浩劫论坛大牛 2022-9-28 08:51 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
今天遇到一个问题,在php 上用正则表达式


  1. ^\d+
复制代码

查找每行开头是数字的内容,
👈🔥🦀♂🦖‏
  1. 123 abc
  2. 456 def
  3. 789 hij
复制代码

‎🎩🤖🙌
找来找去发现只找到了一次,我一度以为是php坏了,用其他语言查找是没问题的,用php就只找到了一个(123)

搜了好久资料才发现问题所在,php有个所谓的 单行模式多行模式

👩‍🕶🧹😷🦴
m (PCRE_MULTILINE)
默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符 (^) 仅匹配字符串的开始位置, 而"行末"元字符 ($) 仅匹配字符串末尾, 或者最后的换行符(除非设置了 D 修饰符)。这个行为和 perl 相同。 当这个修饰符设置之后,“行首”和“行末”就会匹配目标字符串中任意换行符之前或之后,另外, 还分别匹配目标字符串的最开始和最末尾位置。这等同于 perl 的 /m 修饰符。如果目标字符串 中没有 "\n" 字符,或者模式中没有出现 ^ 或 $,设置这个修饰符不产生任何影响。


简单来说就是加上 m 修饰符后,会把每一个 \n\r 后面当成新的一行,这样才能用 ^ 匹配到新行头,否则只有一个行头。
👂🪐🍊🔞🦊‎
上一篇
下一篇
帖子热度 2090 ℃

犬走甲戌 「初入古黑」 2022-9-28 08:51 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

昨天接到一陌生来电,她说是联通公司的,问我是不是185……的机主,我说是啊,她又问我贵姓,我说姓付,又问我名我说单字一个亲,然后她说付亲你好……,她停顿半刻,随即把电话挂了。对付骗子就要这样!
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表