我有一个正则表达式数组,我正在用相同的字符替换。如何使用正则表达式或“|”来降低数组计数?

我的数组中有更多的设置,但为了简单起见,我只放置了我想使用或“|”组合在一起的数组。


$patterns = array();

$patterns[1] = "/(?:\:)/";

$patterns[2] = "/(?:\-_)/";

$patterns[3] = "/(?:\_-)/";

$replacements = array();

$replacements[1] = "-";

$replacements[2] = "-";

$replacements[3] = "-";

preg_replace($patterns, $replacements, $data['string']);

我尝试了不同的尝试,但没有成功。下面尝试对所需数组进行分组:


$patterns = array();

$patterns[1] = "/(?::|-_|_-|)/";

$replacements = array();

$replacements[1] = "-"

我的所有其他数组都有一个唯一的$replacments。保留原始设置可以按我想要的方式工作,但我只是想通过将这3个数组分组为1来降低数组计数。这个正则表达式实际上按预期工作,但对于我的场景,我不得不保持原始设置不变。由于更换的顺序,它给出了好坏参半的结果。在一组中触发替换给出了奇怪的结果。


MYYA
浏览 88回答 1
1回答

LEATH

由于替换是相同的,因此您可以将所有匹配的正则表达式与以下版本结合使用,并使用更简单的版本:-|preg_replace$data['string'] = preg_replace('/(?::|-_|_-|)/', '-', $data['string']);此处将匹配一个 or 或 。(?::|-_|_-|):-__-
打开App,查看更多内容
随时随地看视频慕课网APP