1

目前我正在使用

$str = preg_replace("/\([^\)]+\)/", "", $str); // Remove () and Content
$str = preg_replace("/\[[^\)]+\]/", "", $str); // Remove [] and Content
$str = preg_replace("/\{[^\)]+\}/", "", $str); // Remove {} and Content
$str = preg_replace("/[^a-zA-Z0-9]/", "", $str);  // Remove all non-alphanumeric characters

我想知道是否有办法将这些组合成一个正则表达式

4

1 回答 1

5

您可以使用|这些组合:

(\([^\)]+\)|\[[^\]]+\]|\{[^\}]+\})|[^A-Za-z0-9])

但在你的情况下,我通常只会遍历字符串并手动解析它。
使用“状态变量”($paren_open, $brace_open, $curly_open)可以知道您是否忽略了字符。

即使它看起来不快(因为你必须遍历每个字符),它也比正则表达式快得多,因为正则表达式会做一些更复杂的事情。


资源:

于 2012-04-04T16:08:05.687 回答