我在OpenRefine中有一个专栏,我想操纵:
有字符串(例如:FL),包含数字的字符串(123F423)和数字
我想摆脱所有字母(A-Z)"污染"数字(如123F423),但我不想改变"清洁"字符串和数字。
示例:
FL - > FL
123F324 - > 123324
432531 - > 432531
AB - > AB
342J34 - > 34234
答案 0 :(得分:1)
您可以搜索并删除:
(?<=\d)[A-Za-z]+|[A-Za-z]+(?=\d)
正则表达式表示一个或多个字母,前面没有数字或后面没有数字。它使用lookaround。
编辑:如果不支持环视,您只需搜索
即可(\d)[A-Za-z]+|[A-Za-z]+(\d)
并替换为$1$2
(请参阅demo 2)
答案 1 :(得分:0)
由于正则表达式旨在提供特定匹配而非缺少匹配,因此您无法在单个操作中执行所需操作,并且不会为您连接多个结果。
例如,您可以为[A-Z]+
重复正则表达式并删除有问题的匹配项,或在单个正则表达式中搜索所有数字[0-9]+
并连接所有匹配项。
第二个选项会更快,因为它只评估表达式一次。
修改强>
@horcrux有更好的答案。