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