PHP字符串模式替换

时间:2012-05-19 04:22:19

标签: php regex

我有一组这样的字符串:

Pants [+$50]
Shirts [+$10]
Jeans [+$5]
Jackets [+$100]

如何删除这些行中的'[xxx]'并只留下项目名称(不带尾随空格)?有人告诉我要定义一个正则表达式,不确定它是如何工作的......

2 个答案:

答案 0 :(得分:1)

这实际上有点令人困惑的正则表达式,因为[]是特殊字符:

$str = 'Pants [+$50]';
$str = rtrim(preg_replace('/\[[^\]]*\]/', '', $str));

// 'Pants'

基本上,partern \[[^\]]*\]表示匹配文字[,后跟0个或更多不是]后跟]的字符。 preg_replace中的第二个字符串是它被替换的字符串。在这种情况下,空字符串,因为我们要删除它。然后我们使用rtrim修剪任何尾随空格。

答案 1 :(得分:0)

试试这个:

RegEx

(?im)[ \t]*\[[^\]\[]+\][ \t]*$

代码

$result = preg_replace('/^(.+?)[ \t]*\[[^\][]+\][ \t]*$/im', '$1', $subject);