我正在尝试使用正则表达式来连续抓取所有相同的符号(重复)。返回1个符号或所有相同符号的块。 " ="或" =="但不是" =" " ="
\ W或\ W +不起作用。
例如"===--,,,--;[]'"
array(
[0] => ===
[1] => --
[2] => ,,,
[3] => --
[4] => ;
[5] => [
[6] => ]
[7] => '
)
我不需要代码就可以将它放入数组中。我有那个工作。只需要正则表达式部分来抓取重复符号。
答案 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