正则表达式替换 - 删除不匹配的值

RegEx Replace - Remove Non-Matched Values

首先表示歉意;我对 RegEx 的世界还很陌生。

其次(更多仅供参考),我使用的应用程序仅具有 RegEx 替换功能,因此我可能会在 can/can 无法实现的方面受到限制。

挑战

我有一个主要包含“无用”文本的自由文本字段(标记为 Description)。但是,一些记录将包含一个或多个有用的 ID,我想提取所述 ID。

每个 ID 都有相同的三个字母前缀 (APP),后跟一个五位数的数值(例如 12911)。

例如,我的 Description 字段中有以下字符串;

APP00001Was APP00002TEST APP00003Blah blah APP00004 Apple APP11112OrANGE APP

旅程

我设法非常粗略地组合了一个接近我需要的表达式(尽管,我实际上需要相反的);

/!?APP\d{1,5}/g

结果;

斗争

但是,在替换时,我只能保留不匹配的值;

Was TEST Blah blah  Apple OrANGE APP

结局

我希望输出为;

APP00001 APP00002 APP00003 APP00004 APP11112

如果这是一个 'noddy' 问题,再次道歉;但我们将不胜感激,欢迎所有想法。

非常感谢。

您可以使用交替 | 来捕获以第 1 组中的单词边界开头的模式,或者匹配 1+ 个单词字符后跟可选的空白字符。

你在第1组中捕获的可以用作替换。比赛将不会在替换中。

使用 !? 匹配一个可选的感叹号。您可以将其添加到模式中,但它不是示例数据的一部分。

\b(APP\d{1,5})\w*|\w+\s*

看到一个regex demo

在替换中使用捕获组 1,主要使用 </code> 或 <code>