Regex 用于从数字中删除字符(但不是所有字符)的正则表达式
我在OpenRefine中有一列,我想操纵: 有字符串(例如:FL)、包含数字的字符串(123F423)和数字 我想去掉所有“污染”数字的字母(A-Z)(如123F423),但我不想更改“干净”字符串和数字的任何内容 例如: 飞行高度->飞行高度 123F324->123324 432531->432531 AB->ABRegex 用于从数字中删除字符(但不是所有字符)的正则表达式,regex,Regex,我在OpenRefine中有一列,我想操纵: 有字符串(例如:FL)、包含数字的字符串(123F423)和数字 我想去掉所有“污染”数字的字母(A-Z)(如123F423),但我不想更改“干净”字符串和数字的任何内容 例如: 飞行高度->飞行高度 123F324->123324 432531->432531 AB->AB 342J34->34234您可以搜索并删除: (?<=\d)[A-Za-z]+|[A-Za-z]+(?=\d) 并替换为$1$2(请参阅)您不能在单个操作中执行您想要的
342J34->34234您可以搜索并删除:
(?<=\d)[A-Za-z]+|[A-Za-z]+(?=\d)
并替换为
$1$2
(请参阅)您不能在单个操作中执行您想要的操作,因为正则表达式旨在提供特定的匹配,而不是缺少匹配,并且它不会为您连接多个结果
例如,您可以为[A-Z]+
重复正则表达式并删除有问题的匹配项,或者在单个正则表达式中搜索一次所有数字[0-9]+
,并连接所有结果匹配项
第二个选项会更快,因为它只计算表达式一次
编辑
@魂器有一个更好的答案。你的意思是要将
123FL423
替换为123F423
?不确定你怎么能这样理解它。从123F423开始,我想转到123423mmm,解释更多内容,向我们展示输入输出示例以了解更多内容。编辑这个问题。这是一个非常有趣的替代解决方案。
(\d)[A-Za-z]+|[A-Za-z]+(\d)