【问题标题】:Regexp for removing all spaces and digits用于删除所有空格和数字的正则表达式
【发布时间】:2019-01-09 04:22:43
【问题描述】:

我正在尝试在 sql 语句中使用正则表达式来删除字符串“文本”中的所有空格和数字,这可能看起来像

1. 000000123456   (No space)
2.  00000 123456 (spaces in the beginning and end of string)
3. 90330000 45  (2 spaces at the end)

到目前为止,我已经能够提出以下解决方案:

select regexp_replace('text','\\s(^[0-9]*)\\s','\\1') 

select regexp_replace('text','[[:blank:]]+[^[0-9]*][[:blank:]]+','\\1') 

我得到的结果是:

1. 000000123456
2.  00000 123456 
3. 90330000 45  

我按原样获取文本。如果我尝试使用

删除数字
regexp_replace('text','^[0-9]*','\\1'), 

它工作正常 - 所有数字都被删除并且值导致''(null)。但是带有空格的文本不会删除数字或空格。

我在这里做错了什么?

【问题讨论】:

  • 你为什么要用\\1作为替代品?这是一个捕获组,但如果你只是想删除文本,你可能不需要这个。
  • 您要删除任何数字和空格吗?那么,00000 123456 会变成空字符串吗?
  • 请为每个示例字符串添加预期结果(在字符串周围加上单引号以便于测试)。
  • 是的,维克托。我希望正则表达式检查字符串是否只有数字和空格并将其评估为''(空白)值。
  • @mickmackusa 抱歉,我找不到:(

标签: sql regex regexp-replace


【解决方案1】:

尝试使用同时包含数字和空格的字符类:

regexp_replace('text', '[0-9\\s]+', '')

这应该删除所有数字和空格。但是,您要做什么并不完全清楚,因为您没有在上下文中向我们展示数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2019-06-21
    • 2011-08-30
    相关资源
    最近更新 更多