快速正则表达式帮助匹配相同的符号

时间:2016-11-04 00:51:24

标签: php regex

我正在尝试使用正则表达式来连续抓取所有相同的符号(重复)。返回1个符号或所有相同符号的块。 " ="或" =="但不是" =" " ="

\ W或\ W +不起作用。

例如"===--,,,--;[]'"

array(
  [0] => ===
  [1] => --
  [2] => ,,,
  [3] => --
  [4] => ;
  [5] => [
  [6] => ]
  [7] => '
)

我不需要代码就可以将它放入数组中。我有那个工作。只需要正则表达式部分来抓取重复符号。

2 个答案:

答案 0 :(得分:3)

要检查正则表达式中的重复部分,您需要使用backreferences

以下是javascript中的示例:



a = "===--,,,--;[]'"
t = a.match(/(.)(\1*)/g)
console.log(t)




这是php中的代码:

preg_match_all("/(.)(\\1*)/", "===--,,,--;[]'", $m);
var_dump($m[0]);

输出:

array(8) {
  [0]=>
  string(3) "==="
  [1]=>
  string(2) "--"
  [2]=>
  string(3) ",,,"
  [3]=>
  string(2) "--"
  [4]=>
  string(1) ";"
  [5]=>
  string(1) "["
  [6]=>
  string(1) "]"
  [7]=>
  string(1) "'"
}

如果您想指定 这些特定字符,您可以使用:

preg_match_all("/([=\-,;\[\]'])(\\1*)/", "===--,,,--;[]'", $m);
var_dump($m[0]);

答案 1 :(得分:0)

匹配所有符号"在行中重复" (连续的):

<?php
preg_match_all("/(.)(\\1)(\\1+)?/", "===--,,,--;[]'", $m);
var_dump($m[0]);

输出:

array(4) {
  [0]=>
  string(3) "==="
  [1]=>
  string(2) "--"
  [2]=>
  string(3) ",,,"
  [3]=>
  string(2) "--"
}

您可以测试此代码:DEMO