regex - 我需要一个正则表达式来删除特定字符之前的空格

标签 regex preg-replace

我需要一个正则表达式来删除特定字符之前的所有空格。

示例:

删除第一个“- ”之前的所有空格

之前:

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

因此 - .* 部分应匹配从第一个空格连字符空格到最后一个空格的所有字符。现在控制动词 (*SKIP)(*F) 使匹配失败。现在 OR 运算符后面的正则表达式将仅根据剩余的字符串进行匹配。如果您在备用分支中使用 .*.*?,它将不起作用。

source

preg_replace('~( - .*)| ~', '\1', $str);

DEMO

DEMO

关于regex - 我需要一个正则表达式来删除特定字符之前的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220384/

相关文章:

java - Java 性能改进中的正则表达式匹配

php - 如何将主题标签文本转换为主题标签超链接?

PHP 在字符串中查找 URLS 并建立链接。如果还没有在链接中

php - 用数组调用的 preg_replace() 需要事先使用 ksort() 吗?嗯?

javascript - 将所有点替换为单个

vb.net - 正则表达式阻止了程序

ruby - 如果行不是以 KEYWORD 开头,则删除换行符

regex - 正则表达式匹配除最后一个空格外带有空格的连续单词序列

php - str_用连字符替换 A 标签名称属性中的空格

php - regex- preg_replace - 换行后的空格!