PHP 字符串模式替换


PHP String Pattern Replace

我有一组这样的字符串:

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

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

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

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

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

试试这个:

正则表达式

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

法典

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