Regex 删除一个字母(除补全外)

Regex 删除一个字母(除补全外),regex,Regex,正在尝试删除除“r d”的合成之外的所有字符。更清楚地说,有一些例子: a ball->ball r某物->某物 d某人->某人 研发某物->研发某物 r某物d->某物 到目前为止,我设法删除了r或d中的字母,但这不是我想要的。我只想保留补偿(例4)。我用这个: \b(?!r|d)\w{1}\b 知道是谁干的吗 编辑:注册引擎支持lookbehinds。您可以捕获rd组合,并在替换模式中使用反向引用来恢复该组合,并删除所有其他匹配项: \b(r d)\b|\b\w\b\s* 请参阅(替换为将r

正在尝试删除除“r d”的合成之外的所有字符。更清楚地说,有一些例子:

a ball->ball
r某物->某物
d某人->某人
研发某物->研发某物
r某物d->某物

到目前为止,我设法删除了
r
d
中的字母,但这不是我想要的。我只想保留补偿(例4)。我用这个:

\b(?!r|d)\w{1}\b

知道是谁干的吗


编辑:注册引擎支持lookbehinds。

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

\b(r d)\b|\b\w\b\s*
请参阅(替换为将
rd
放回结果中的
$1

详细信息

  • \b(rd)\b
    -捕获到组1中的“整词”
    rd
  • |
    -或
  • \b\w\b\s*
    -一个由1个字母/数字/下划线(
    \b\w\b
    )组成的完整单词,后跟0+空格(
    \s*
    ,可能不需要删除多余的空格)

您的正则表达式引擎是什么?它支持lookbehinds吗?您需要在
r
d
之间允许多个空格吗?谢谢您的解释!
\s*
与“++”相同吗?
\s
匹配空白符号(集合可能因正则表达式的不同而不同),而文本空间仅匹配常规空间。在上面的regex101链接中,您用一个空字符串替换了匹配项,因此,您也删除了所有捕获的文本。参见我的答案:(替换为
$1
,这将
rd
放回结果中)