我有一组这样的字符串:
Pants [+$50]
Shirts [+$10]
Jeans [+$5]
Jackets [+$100]
如何删除这些行中的“[xxx]”并只留下项目名称(没有尾随空格)?我被告知要定义一个正则表达式,不知道它是如何工作的......
这实际上是一个令人困惑的正则表达式,因为[
和]
是特殊字符:
$str = 'Pants [+$50]';
$str = rtrim(preg_replace('/\[[^\]]*\]/', '', $str));
// 'Pants'
基本上,partern\[[^\]]*\]
意味着匹配一个文字[
,后跟 0 个或多个不]
跟 a 的字符]
。preg_replace中的第二个字符串是它被替换的内容。在这种情况下,我们要删除空字符串。然后我们使用rtrim修剪任何尾随空格。
试试这个:
正则表达式
(?im)[ \t]*\[[^\]\[]+\][ \t]*$
代码
$result = preg_replace('/^(.+?)[ \t]*\[[^\][]+\][ \t]*$/im', '$1', $subject);