删除一个字母除了一个字母

时间:2016-11-04 09:46:13

标签: regex

尝试删除除了' r d`的组合之外的所有字符。更清楚一些例子:

$sql_host = "localhost"; $sql_user = "root"; $sql_pass = ""; $sql_databasename = "data";

直到现在我设法删除了 require($_SERVER['DOCUMENT_ROOT'] . "/inc/config.php"); $sql = array( "host" => $sql_host, "user" => $sql_user, "pass" => $sql_pass, "dbid" => $sql_databasename, ); foreach ($sql as $v){ if (!isset($v)){ die("ERROR: SQL LOGIN INVALID"); } } function connectSQL(){ $dbC = new mysqli($sql["host"], $sql["user"], $sql["pass"], $sql["dbid"]); if ($dbC->connect_error){ die("SQL Error: " . $dbC->connection_error); } } a ball -> ball r something -> something d someone -> someone r d something -> r d something r something d -> something以外的字母,但这不是我想要的。我想只保留比赛(ex.4)。我用这个:

r

知道该怎么做吗?

编辑:reg引擎支持lookbehinds。

1 个答案:

答案 0 :(得分:1)

您可以捕获r d组合并在替换模式中使用反向引用来恢复该组合,并删除所有其他匹配项:

\b(r d)\b|\b\w\b\s*

请参阅regex demo(替换为$1,将r d放回到结果中。

<强>详情:

  • \b(r d)\b - 捕获到第1组
  • 中的“整个单词”r d
  • | - 或
  • \b\w\b\s* - 由1个字母/数字/下划线(\b\w\b)组成的单个整词,后跟0 +空格(\s*,仅用于删除过多的空格,可能不会是必要的。)