【问题标题】:Double forward slash in regular expression正则表达式中的双斜杠
【发布时间】:2014-05-06 07:13:19
【问题描述】:

我想使用 preg_split 在双斜杠 (//) 和问号 (?) 上拆分字符串。我可以像这样使用一个正斜杠:

preg_split('[\/]', $string);

但是

preg_split('[\//]', $string);
or
preg_split('[\/\/]', $string);

不工作。

如何在表达式中使用双斜杠?

【问题讨论】:

  • 我不会使用像方括号这样的正则表达式特殊字符作为分隔符。它只会引起混乱。如果您不想要斜线,因为您需要匹配,请使用 ~# (一个特殊字符,您的表达式中不需要)

标签: php regex preg-split


【解决方案1】:

如您所见,字符串以两个正斜杠 (//) 和一个问号 (?) 分开。

$str= 'Hi//Hello?New World/';
$splits = preg_split( '@(\/\/|\?)@', $str );
print_r($splits);

OUTPUT :

Array
(
    [0] => Hi
    [1] => Hello
    [2] => New World/
)

【讨论】:

    【解决方案2】:

    / and ? 是为正则表达式保留的,当你从字面上使用它们时,你需要对它们进行转义。

    $str = 'test1 // test2 // test3 ';
    
    $array = preg_split("/\/\//", $str);
    print_r($array);
    

    为了?你可以用作

    $str = 'test1 ? test2 ? test3 ';
    
    $array = preg_split("/\?/", $str);
    print_r($array);
    

    【讨论】:

      【解决方案3】:

      您可以为您的正则表达式使用不同的分隔符。

      <?php
      
      $str = 'hello // world // goodbye ? foo ? bar';
      
      $array = preg_split("!//!", $str);
      print_r($array);
      ?>
      

      对于问号,可以用一个字符类来封装。您可以使用| 做一个或另一个来分隔。

      $array = preg_split("!//|[?]!", $str);
      

      【讨论】:

        猜你喜欢
        • 2023-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 2011-03-09
        • 1970-01-01
        • 2013-01-28
        相关资源
        最近更新 更多