首先,道歉;我对RegEx的世界还很陌生。
第二个(仅供参考),我使用的是仅具有RegEx Replace功能的应用程序,因此,我可能会受限于无法/无法实现的目标。
挑战(Challange)
我有一个自由文本字段(标记为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
再次道歉,如果这有点像一个“点头”问题;但我们将不胜感激,欢迎所有想法。
非常感谢。
答案 0 :(得分:2)
您可以使用交替|
来捕获从第1组中的单词边界开始的模式,或者匹配1+个单词字符,然后匹配可选的空白字符。
您在第1组中捕获的内容可以用作替换。匹配项将不会替换。
使用!?
匹配可选的感叹号。您可以将其放在模式之前,但这不是示例数据的一部分。
\b(APP\d{1,5})\w*|\w+\s*
在替换使用捕获组1中,大多数使用$1
或\1