【问题标题】:Regex to find ampersands without spaces on both sides正则表达式查找两边没有空格的&符号
【发布时间】:2010-01-13 13:42:35
【问题描述】:

我只是想找出正则表达式来查找任何没有紧跟在空格之前和之后的&符号。例如,它会找到“asdf&asdf”和“asdf& asdf”,但不会找到“asdf & asdf”

这将在 preg_replace 中用于在前后添加空格。 (如果你想知道,问题是我遇到了一个所见即所得的问题,它有一个错误,它会在 & 符号的两边去掉空格,我需要在事后手动将它们添加回来)。想法?

【问题讨论】:

  • 再想一想——如果要替换加空格,或许可以搜索\s?&\s?,用`&`替换。即使你有空间,它仍然可以工作......

标签: php regex


【解决方案1】:
(\S&\S|\s&\S|\S&\s)
  • 非空白字符,后跟 & 和另一个非空格字符
    OR
  • 空格后接 &,后接非空格字符
    OR
  • 非空白字符后跟 &,后跟另一个空白字符

【讨论】:

  • 完成答案,相信解决办法是:preg_replace('/(\S&\S|\s&\S|\S&\s)/', ' & ', $str);
【解决方案2】:

& 号宽度不在空格之后或 & 号不在空格之前,但不能两者兼有:

(?<!\s)&|&(?!\s)

使用环视,因此仅捕获与号。

【讨论】:

    【解决方案3】:

    我建议首先找到与左右字符无关的所有 & 符号,然后在断言后面使用否定查找,以确保不是两个字符都是空格。

    .&.(?<! & )
    

    【讨论】:

      【解决方案4】:

      & 前后非空格:

      (&[^ ]|[^ ]&)
      

      【讨论】:

      • 不错的一个,与我的相似,但更简单,没有环视。你也可以\S&amp;|&amp;\S.
      【解决方案5】:

      如果两边都没有空间,可以这样做

      echo preg_replace('/ ?& ?/',' & ','asdf&asdf asdf& asdf asdf & asdf');
      //asdf & asdf asdf & asdf asdf & asdf
      

      如果两边没有空格(回答问题标题),它会在asdf&amp; asdf上失败

      echo preg_replace('/(?<! )&(?! )/',' & ','asdf&asdf asdf& asdf asdf & asdf');
      //asdf & asdf asdf& asdf asdf & asdf
      

      【讨论】:

      • 请注意,OP 需要一个正则表达式,该正则表达式匹配一个没有空格 另一侧(不一定都是)的 & 符号。
      • 根据我的测试,我只发现前后都没有空格的字符串。他想要的是没有两者的&符号,而不是两者都没有的&符号。
      • 我已将所有三个测试字符串放入 RegexBuddy,它只匹配没有空格的字符串(第一个)。
      • 又加了一个,题名其实很混乱。
      【解决方案6】:

      它应该可以工作(未经测试):/([^\s]&amp;|&amp;[^\s])/。如果您只关心空格而不关心“任何空白字符”:/([^ ]&amp;|&amp;[^ ])/

      【讨论】:

        【解决方案7】:
        ([^\s]+&.+)|(.+&[^\s]+)
        

        此正则表达式确保&amp; 字符的左侧 x 或右侧没有空格

        【讨论】:

        • 我的尝试类似,但是,OP 声明该模式也应该匹配“asdf& asdf”。我相信这不会。
        【解决方案8】:
        (?<=\s)\&\&\s
        

        https://regex101.com/r/vBuuUf/1

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-04
          • 1970-01-01
          • 2020-04-06
          • 2016-02-15
          • 1970-01-01
          • 2020-09-12
          • 2017-03-09
          相关资源
          最近更新 更多