我需要一个正则表达式来删除特定字符前的 space
I need a regex to remove space before a specific character
我需要一个正则表达式来删除特定字符前的所有 space。
示例:
删除第一个“-”之前的所有space
之前:
My Beautiful Video - Hello darling - 19.10.2015 10:00
之后:
MyBeautifulVideo - Hello darling - 19.10.2015 10:00
您可以使用 (*SKIP)(*F)
或捕获组。
preg_replace('~ - .*(*SKIP)(*F)| ~', '', $str);
上述正则表达式控制动词的语法必须像,
What_I_want_to_avoid(*SKIP)(*FAIL)|What_I_want_to_match
所以 - .*
部分应该匹配从第一个 space 连字符 space 到最后一个连字符的所有字符。现在控制动词 (*SKIP)(*F)
使匹配失败。现在 OR 运算符之后的正则表达式将仅从剩余的字符串中进行匹配。如果在备用分支中使用 .*
、.*?
将不起作用。
source
或
preg_replace('~( - .*)| ~', '', $str);
\s*-.*$\K|\s
你可以在这里使用\K
并替换为空字符串。
$re = '/\s*-.*$\K|\s/m';
$str = "My Beautiful Video - Hello darling - 19.10.2015 10:00";
$subst = "";
$result = preg_replace($re, $subst, $str);
我需要一个正则表达式来删除特定字符前的所有 space。
示例:
删除第一个“-”之前的所有space
之前:
My Beautiful Video - Hello darling - 19.10.2015 10:00
之后:
MyBeautifulVideo - Hello darling - 19.10.2015 10:00
您可以使用 (*SKIP)(*F)
或捕获组。
preg_replace('~ - .*(*SKIP)(*F)| ~', '', $str);
上述正则表达式控制动词的语法必须像,
What_I_want_to_avoid(*SKIP)(*FAIL)|What_I_want_to_match
所以 - .*
部分应该匹配从第一个 space 连字符 space 到最后一个连字符的所有字符。现在控制动词 (*SKIP)(*F)
使匹配失败。现在 OR 运算符之后的正则表达式将仅从剩余的字符串中进行匹配。如果在备用分支中使用 .*
、.*?
将不起作用。
source
或
preg_replace('~( - .*)| ~', '', $str);
\s*-.*$\K|\s
你可以在这里使用\K
并替换为空字符串。
$re = '/\s*-.*$\K|\s/m';
$str = "My Beautiful Video - Hello darling - 19.10.2015 10:00";
$subst = "";
$result = preg_replace($re, $subst, $str);