我有一组这样的字符串:
Pants [+$50]
Shirts [+$10]
Jeans [+$5]
Jackets [+$100]
如何删除这些行中的'[xxx]'并只留下项目名称(不带尾随空格)?有人告诉我要定义一个正则表达式,不确定它是如何工作的......
答案 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);