如何修改现有正则表达式,匹配日志指定字符串并剔除多余内容
正则修改方案
修改后的单条正则如下,适配所有提取要求同时保留原有匹配能力:
<([A-Za-z0-9]+)>|([A-Za-z0-9+\-]{8,36})(?=Mobile|\b|$)
使用时直接取两个捕获组中非空的结果即可,无需额外二次处理。
规则匹配说明
- 针对
<CSError>这类被尖括号包裹的内容:通过<([A-Za-z0-9]+)>分支匹配尖括号内的目标值,直接捕获尖括号中间的字符串,自动剔除外层<>符号 - 针对末尾拼接
Mobile的字符串:通过正向预查(?=Mobile|\b|$)识别后缀的Mobile,匹配时自动截断到Mobile之前的内容,同时兼容无Mobile后缀的原有场景 - 扩展原有字符匹配范围:在原有允许的大小写字母、数字、横杠基础上新增
+的匹配支持,适配SAR-+96599853915-63aa6d10-2-2这类包含加号的字符串 - 长度校验保留原有8-36位的限制,完全兼容原有匹配规则
全场景验证结果
| 原始字符串 | 提取结果 | 是否符合要求 |
|---|---|---|
a60a4c82-82ea-4ff3-ac64-f4450d45e72e | a60a4c82-82ea-4ff3-ac64-f4450d45e72e | 是 |
0222bfb3 | 0222bfb3 | 是 |
2110122003513063314 | 2110122003513063314 | 是 |
SAR-+96599853915-63aa6d10-2-2Mobile | SAR-+96599853915-63aa6d10-2-2 | 是 |
63AA6CBDMobile | 63AA6CBD | 是 |
<CSError> | CSError | 是 |
内容的提问来源于stack exchange,提问作者Divyank
相关产品推荐
相关产品推荐

