繁体   English   中英

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

[英]RegEx Replace - Remove Non-Matched Values

首先,道歉; 我对 RegEx 的世界还很陌生。

其次(更多的是仅供参考),我使用的应用程序仅具有 RegEx Replace 功能,因此我可能会限制可以/不能实现的内容。

挑战

我有一个自由文本字段(标记为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

如果这是一个有点“笨拙”的问题,再次道歉; 但任何帮助将不胜感激,欢迎所有想法。

提前谢谢了。

你可以使用一个替代| 捕获以组 1 中的单词边界开始的模式或匹配 1+ 单词字符后跟可选的空白字符。

您在第 1 组中捕获的内容可以用作替换。 比赛将不在替补中。

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

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

查看正则表达式演示

在替换中使用捕获组 1,主要使用$1\\1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM