sparksql用正则表达式取字符串中的数字数字
时间: 2024-02-09 21:13:31 浏览: 31
你可以使用`regexp_extract`函数来提取字符串中的数字。以下是一个示例代码:
```sql
SELECT regexp_extract('abc123def456', '\\d+', 0)
```
这将返回字符串`123`,因为它是第一个匹配正则表达式`\d+`的子字符串。如果您想匹配所有的数字并将它们连接起来,可以使用`regexp_replace`函数:
```sql
SELECT regexp_replace('abc123def456', '\\D', '')
```
这将返回字符串`123456`,因为它删除了所有非数字字符。
相关问题
sparksql用正则表达式取字符串中的除数字以为的内容
您可以使用 `regexp_replace` 函数来移除字符串中的数字,然后再使用 `trim` 函数去掉空格。以下是一个示例代码:
```sql
SELECT TRIM(regexp_replace('abc123def456ghi', '[0-9]+', '')) as result;
```
这将返回一个字符串,其中只包含非数字字符。在这个例子中,结果为 `'abcdefghi'`。
正则表达式 判断字符串中数字的单位
如果您希望使用正则表达式判断字符串中数字的单位,可以使用如下正则表达式:
```
\d+(\.\d+)?\s*(k|m|g)b?
```
这个正则表达式可以匹配如下形式的字符串:
- 100kb
- 1.23mb
- 500gb
- 10k
- 3.5m
其中,`\d+`表示匹配一个或多个数字,`(\.\d+)?`表示匹配小数部分,`\s*`表示匹配零个或多个空白符,`(k|m|g)b?`表示匹配单位,其中`k`表示千字节,`m`表示兆字节,`g`表示千兆字节,`b`表示字节。`?`表示前面的字符或括号中的表达式出现零次或一次。
注意,这个正则表达式只能匹配数字和单位之间有零个或多个空白符的情况,如果数字和单位之间有其他字符,则无法匹配。