1

我有一组这样的字符串:

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

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

4

2 回答 2

1

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

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

// 'Pants'

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

于 2012-05-19T04:25:59.760 回答
0

试试这个:

正则表达式

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

代码

$result = preg_replace('/^(.+?)[ \t]*\[[^\][]+\][ \t]*$/im', '$1', $subject);
于 2012-05-19T04:27:56.080 回答