zoukankan      html  css  js  c++  java
  • PostgreSQL正则表达式查询

    参考http://www.php100.com/manual/PostgreSQL8/functions-matching.html

    LIKE

    string LIKE pattern [ ESCAPE escape-character ]
    string NOT LIKE pattern [ ESCAPE escape-character ]

    每个 pattern 定义一个字串的集合。 如果该 string 包含在 pattern 代表的字串集合里,那么 LIKE 表达式返回真。 (和我们想象的一样,如果 LIKE 返回真,那么 NOT LIKE 表达式返回假, 反之亦然。一个等效的表达式是 NOT (string LIKE pattern).)

    如果 pattern 不包含百分号 或者下划线,那么该模式只代表它本身; 这时候 LIKE 的行为就象等号操作符。 在 pattern 里的下划线 (_)代表(匹配)任何单个字符; 而一个百分号(%)匹配任何零或更多 字符长的字串。

    下面是一些例子∶

    'abc' LIKE 'abc'    true
    'abc' LIKE 'a%'     true
    'abc' LIKE '_b_'    true
    'abc' LIKE 'c'      false
    LIKE 模式匹配总是覆盖整个字串。 要匹配在字串内部任何位置的序列,该模式必须以百分号开头和结尾。
    LIKE运算符也可以匹配指定的字符串,但与~不同,LIKE匹配的字符串如果在文本中间出现,则找不到它,相应的行也不会返回。而~在文本进行匹配,如果被匹配的字符串在文本中出现,~将会找到它,相应的行会被返回。
    Table 正则表达式匹配操作符(注意:~相当于like)
    操作符描述例子
    ~ 匹配正则表达式,大小写相关 'thomas' ~ '.*thomas.*'
    ~* 匹配正则表达式,大小写无关 'thomas' ~* '.*Thomas.*'
    !~ 不匹配正则表达式,大小写相关 'thomas' !~ '.*Thomas.*'
    !~* 不匹配正则表达式,大小写无关 'thomas' !~* '.*vadim.*'

    正则表达式量词

    量词匹配
    * 一个匹配 0 或者更多个原子的序列
    + 一个匹配 1 或者更多个原子的序列
    ? 一个匹配 0 个或者 1 个原子的序列
    {m} 一个正好匹配 m 个原子的序列
    {m,} 一个匹配m 个或者更多原子的序列
    {m,n} 一个匹配 m 到 n 个(包含两端) 原子的序列;m 不能比 n 大
    *? * 的非贪婪模式
    +? + 的非贪婪模式
    ?? ? 的非贪婪模式
    {m}? {m} 的非贪婪模式
    {m,}? {m,} 的非贪婪模式
    {m,n}? {m,n} 的非贪婪模式

    {...} 的形式被称作范围。 一个范围内的数字 m 和 n 都是无符号十进制整数, 允许的数值从 0 到 255(闭区间)。

     正则表达式约束

    约束描述
    ^ 匹配字串的开头
    $ 匹配字串的结尾
    (?=re) 正前瞻 匹配任何匹配 re 的 子字串起始点(只在 ARE 中有)
    (?!re) 负前瞻 匹配任何不匹配 re 的子字串的起始点。(只在 ARE 中有)
  • 相关阅读:
    学Python必背的初级单词,你都背了吗?
    零基础Python应该怎样学习呢?(附视频教程)
    初学Python,需要装什么软件?
    Python该怎么入门?Python入门教程(非常详细)
    c语言该怎么入门?C语言入门教程(非常详细)
    零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!
    零基础学到什么程度可以找一份web前端工作?
    【spring boot】SpringBoot初学(2)
    【spring boot】SpringBoot初学(1)
    【spring】(填坑)sql注入攻击
  • 原文地址:https://www.cnblogs.com/wuling129/p/4730770.html
Copyright © 2011-2022 走看看