正则表达式删除Square Brackets / Whitespace

时间:2013-12-16 16:09:44

标签: regex

我正在尝试使用正则表达式清除一些用户输入以删除[和]并删除任何大于1个空格的空格。但我似乎无法摆脱我所追求的效果。这是我第一次使用正则表达式,所以我对如何写出来感到有点难过。

(preg_replace("[\[\]]\s{2,}"), "", $source);

这就是我用来基本上格式化

[Hello World    ]

进入

Hello World

然而,当我输入信息时,似乎删除了整个信息。

5 个答案:

答案 0 :(得分:0)

使用交替:

$result = preg_replace("/[[\]]|\s{2,}/", "", $source);

你也错过了PCRE delimiters(开头和结尾的/)。

请注意,Hello World(有两个空格)的情况将变为HelloWorld。您还可以进行多次替换:

$result = preg_replace(array("/[[\]]/", "\s+"), array("", " "), $source);

答案 1 :(得分:0)

试试这些正则表达式

preg_replace('/\[.*\]/', '', $str);
preg_replace('/\[.*?\]/', '', $str);

答案 2 :(得分:0)

使用两个单独的正则表达式替换:

/[\[\]]/ → ""

/\s(\W)/ → "$1"

这样,Hello World(带有两个空格)的内容将变为Hello World而不是HelloWorld,但Hello World !仍会变为Hello World!

答案 3 :(得分:0)

$test = "[Hello World     ]    ";
print preg_replace("/\[|\]|\s{2,}/", "", $test);

答案 4 :(得分:0)

这可能不是你想到的,但你可以只选择单词,然后修剪它。

r'\w+\s' == 'Hello World '
trim()   == 'Hello World'