【发布时间】:2014-04-24 19:09:05
【问题描述】:
首先,我使用 EditPadPro 进行正则表达式清理,所以给出的任何答案都应该在该环境中工作。
我得到了一个很大的电子表格,里面装满了我每天都必须清理的数据。我已经设法将它归结为我运行的几个不同的正则表达式,这很有效......但我很好奇是否有可能减少到一个正则表达式。
这是一些示例数据:
3-CPC_114851_70095_70095_CAN-bre
3-CPC_114851_70095_70095_CAN
b11-ao1-113775-bre
b7-ao-114441
b7-ao-114441-bre
b7-ao1-114441
b7-ao1-114441-bre
http://go.nlvid.com/results1/?http://bo
go.nlv/results1/?click
b4-sm-1359
b6-sm-1356-bre
1359_195_1453814569-bre
1356_104_1456856729
b15-rad-8905
b15-rad-8905-bre
以下是上述数据的最终结果:
114851-bre
114851
113775-bre
114441
114441-bre
114441
114441-bre
http://go.nlvid.com/results1/
go.nlv/results1/
sm-1359
sm-1356-bre
sm-1359-bre
sm-1356
rad-8905
rad-8905-bre
所以,有很多规则,例如:
- 在超过 2 个下划线的情况下,结果只需要包含第一个下划线之后的值,以及从破折号开始的所有内容。
- 如果字符串包含“-ao-”、“-ao1-”,则应删除最终数字字符串之前的所有内容。
- 如果存在问号,则应删除从标记开始的所有内容。
- 如果字符串包含“-sm-”或“-rad-”,则应删除这些字母字符串之前的所有内容。
- 如果字符串包含 2 个下划线,则在第一个数字字符串之后的所有内容直到破折号 (如果存在)应该被删除,并且应该在前面加上字符串“sm-”。
此外,还有其他数据必须保持不变,包括但不限于:
113535|24905|24905
以及这种 xxxxxx|yyyyy|zzzzz 模式的许多变体(并不总是那些字符串长度)
这可能对正则表达式的要求太多了,我不确定,因为我不太擅长。但我已经看到了一些令人印象深刻的事情,所以我想我会把它发布给社区,看看你会得到什么。
【问题讨论】:
-
嘿乔纳森,为了完成,我已经编辑了我的答案,并为您提供了在 EPP 中做您想做的事情的解决方案。我们将两个正则表达式保存到收藏夹,然后录制一个简短的宏。这真的很容易,因为“sm-”,没有其他方法可以获取最后一个正则表达式。希望这对您有用,如果您有任何问题,请告诉我。
-
另外,修正了正则表达式中的几个错别字(有几个我替换了匹配项,但没有费心匹配要删除的字符串的结尾。)粘贴了宏供您查看。