忽略正则表达式中的空格

时间:2017-11-08 12:37:47

标签: php regex

我有以下正则表达式

(?i)(\bl\b|\bline\b)(\s*)(555)

我正在尝试匹配字符串Line555。该表达式适用于匹配line 555Line 555,但是,如果我删除两者之间的空格,它将不再起作用。任何人都可以解释原因吗?

提前谢谢

1 个答案:

答案 0 :(得分:3)

由于\s模式之前的word boundarye中的5Line555之间没有字边界。只是为了提醒哪些位置与单词边界匹配:

  

有三种不同的职位符合词边界:

     
      
  • 在字符串中的第一个字符之前,如果第一个字符是单词字符。
  •   
  • 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
  •   
  • 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
  •   

所以,使用

(?i)\b(l(?:ine)?)(\s*)(555)

this regex demo。如果您对这些子匹配不感兴趣,请删除捕获组。

<强>详情

  • (?i) - 不区分大小写的修饰符
  • \b - 领先的单词边界
  • (l(?:ine)?) - 第1组:l,然后是可选的ine子字符串
  • (\s*) - 第2组:0 +空格
  • (555) - 第3组:555 substring。