Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP字符串模式替换_Php_Regex - Fatal编程技术网

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);