【问题标题】:Postgresql regex replace text fieldPostgresql 正则表达式替换文本字段
【发布时间】:2013-09-25 20:43:38
【问题描述】:

大家好,我对正则表达式有疑问,您能帮我从如下文本中提取日期吗:

Start   20130918 14:35:00

我只想从文本中提取 20130918。 我尝试过这样的事情:

regexreplace(Start('\s+\w{5}\d{8}\s',''))

【问题讨论】:

  • 你说你想提取日期,但是你用空字符串替换除了时间之外的所有东西,你到底想达到什么目的?
  • 我只想从文本中提取日期,删除开始和时间。

标签: regex file postgresql text replace


【解决方案1】:

对于此类问题,最好使用子字符串而不是 regex_replace:

select substring('Start   20130918 14:35:00' from '[0-9]{8}')

【讨论】:

    【解决方案2】:

    您可以使用以下表达式来匹配该行:

    Start\s+([0-9]{8})\s.*
    

    然后是替换字符串:\1

    注意:如果您将表达式作为字符串传递,您可能需要对每个反斜杠进行双重转义,因此您可能需要使用:

    Start\\s+([0-9]{8})\\s.*
    

    编辑:您可以使用以下语句:

    SELECT regexp_replace('Start 20130918 14:35:00','Start\s+([0-9]{8})\s.*','\1')
    

    这是一个SQL Fiddle Demo

    【讨论】:

    • 但是当我这样做时,我只得到输出开始。
    • SELECT regexp_replace('Start 20130918 14:35:00','\w{5}\s+([0-9]{7})\s*.','')跨度>
    • 这样我得到了输出时间,我只提取日期有点困难,其他的都被删除了。
    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 2011-09-07
    • 2017-10-18
    • 2017-01-21
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多