【发布时间】:2019-06-18 01:09:26
【问题描述】:
我想弄清楚如何为 xx.xx.xx 格式的字符串编写正则表达式(但有时不包括第三个参数)
例如,字符串可以是:
12.1
12.1.0
14.5.1
8.2.1
8.2.0
8.2
如果它包含在第三个位置,我想要丢弃尾随的 0(或者,如果缺少第三个参数,则用 0 填充)。
期望的输出(从上面):
12.1
12.1
14.5.1
8.2.1
8.2
8.2
或者,如果填充零更容易,所需的输出将是:
12.1.0
12.1.0
14.5.1
8.2.1
8.2.0
8.2.0
尝试过(在 SQL 中):
SELECT regexp_extract('10.0.0', '^([^.]*.[^.]*.[^.]*[^0])', 0);
SELECT regexp_extract('10.0.0', '^([^.]*.[^.]*.[^.0]*', 0);
SELECT regexp_extract('10.0.0', "([0-9]+\.[0-9]+\.[1-9]+)");
例如,上面的大多数只是给我 10.0.0 而不是 10.0。
【问题讨论】:
-
只需要正则表达式吗?对于命令行上的此类任务,我将使用
awk。不过,您似乎对使用 SQL 有一些特殊的需求? -
感谢大家迄今为止的帮助。是的,它需要是SQL。这将针对 Hadoop 中的一个非常大的数据集运行,因此计算速度是一个因素。