如果这确实是我需要的话,我是正则表达式的新手。
字符串可能包括:
[name* your-name ]
[email* your-main-email some_thing]
etc
业余逻辑:
希望产生:
[your-name]
[your-main-email]
etc
还是我用方法脱离目标?
非常感谢
答案 0 :(得分:1)
试试此代码
$str = '[name* your-name ] [email* your-main-email some_thing]';
$str = preg_replace("/\[[^\s]+\s+([^\]\s]+)\s+[^\]]*\]/", "[$1]", $str);
echo $str;
正则表达式解释:
/
分隔符\[
匹配起始方括号[^\s]+
匹配一个或多个非空格字符\s+
匹配一个或多个空格(
开始捕获群组[^\]\s]+
匹配一个或多个不空格且不 ]
)
结束捕获组\s+
匹配一个或多个空格[^\]]*
匹配零个或多个字符不 ]
\]
匹配结束方括号/
分隔符要在最后一个空格丢失时进行替换,即[name* your-name]
,然后使用以下正则表达式
/\[[^\s]+\s+([^\]\s]+)[^\]]*\]/