精华内容
下载资源
问答
  • Regexp 函数

    2019-06-05 18:29:00
    ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的...

    ORACLE中的支持正则表达式的函数主要有下面四个:

    1,REGEXP_LIKE :与LIKE的功能相似

     

    2,REGEXP_INSTR :与INSTR的功能相似

    3,REGEXP_SUBSTR :与SUBSTR的功能相似

    4,REGEXP_REPLACE :与REPLACE的功能相似

     

    这里解析一下几个参数的含义:

    1、source_char,输入的字符串,可以是列名或者字符串常量、变量。

    2、pattern,正则表达式。

    3、match_parameter,匹配选项。

    取值范围: i:大小写不敏感; c:大小写敏感;n:点号 . 不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。

    4、position,标识从第几个字符开始正则表达式匹配。

    5、occurrence,标识第几个匹配组。

    6、replace_string,替换的字符串。

     

    它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,

    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

    POSIX 正则表达式由标准的元字符(metacharacters)所构成:

    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。

    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹 配 '\n' 或 '\r'。

    '.' 匹配除换行符之外的任何单字符。

    '?' 匹配前面的子表达式零次或一次。

    '+' 匹配前面的子表达式一次或多次。

    '*' 匹配前面的子表达式零次或多次。

    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的 字符串。

    '( )' 标记一个子表达式的开始和结束位置。 '[]' 标记一个中括号表达式。

    '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,

    '{m}'表示出现m次,'{m,}'表示至少 出现m次。 \num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

     

    字符簇:

    [[:alpha:]] 任何字母。

    [[:digit:]] 任何数字。

    [[:alnum:]] 任何字母和数字。

    [[:space:]] 任何白字符。

    [[:upper:]] 任何大写字母。

    [[:lower:]] 任何小写字母。

    [[:punct:]] 任何标点符号。

    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

     

    各种操作符的运算优先级

    \转义符

    (), (?:), (?=), [] 圆括号和方括号

    *, +, ?, {n}, {n,}, {n,m} 限定符

    ^, $, anymetacharacter 位置和顺序

    |

    */

     

    --创建表 create table fzq ( id varchar(4), value varchar(10) );

    --数据插入

    insert into fzq values ('1','1234560');

    insert into fzq values ('2','1234560');

    insert into fzq values ('3','1b3b560');

    insert into fzq values ('4','abc');

    insert into fzq values ('5','abcde');

    insert into fzq values ('6','ADREasx');

    insert into fzq values ('7','123 45');

    insert into fzq values ('8','adc de');

    insert into fzq values ('9','adc,.de');

    insert into fzq values ('10','1B');

    insert into fzq values ('10','abcbvbnb');

    insert into fzq values ('11','11114560');

    insert into fzq values ('11','11124560');

     

    --regexp_like

    --查询value中以1开头60结束的记录并且长度是7位

    select * from fzq where value like '1____60';

    select * from fzq where regexp_like(value,'1....60');

     

    --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。

    --使用like就不是很好实现了。

    select * from fzq where regexp_like(value,'1[0-9]{4}60');

     

    -- 也可以这样实现,使用字符集。

    select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');

     

    -- 查询value中不是纯数字的记录

    select * from fzq where not regexp_like(value,'^[[:digit:]]+$');

     

    -- 查询value中不包含任何数字的记录。

    select * from fzq where regexp_like(value,'^[^[:digit:]]+$');

     

    --查询以12或者1b开头的记录.不区分大小写。

    select * from fzq where regexp_like(value,'^1[2b]','i');

     

    --查询以12或者1b开头的记录.区分大小写。

    select * from fzq where regexp_like(value,'^1[2B]');

     

    -- 查询数据中包含空白的记录。

    select * from fzq where regexp_like(value,'[[:space:]]');

     

    --查询所有包含小写字母或者数字的记录。

    select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');

     

    --查询任何包含标点符号的记录。

    select * from fzq where regexp_like(value,'[[:punct:]]');

     

    例子:判断姓名是否为空,少于两个字符,包含数字和字母

    create or replace FUNCTION CheckName(NameStr in VARCHAR2)

    RETURN integer A

    s BEGIN --符合返回1,不符合返回0

    if(NameStr is null or length(NameStr)<2)

    then return 0;

    else if(NameStr like '%未取名%')

    then RETURN 0;

    end if;

    if regexp_like(NameStr,'^([a-z]+|[0-9]+|[A-Z]+)$')

      then return 0;

    end if;

     return 1;

    end if;

    END CheckName;

    转:https://www.cnblogs.com/stono/p/6671441.html

    转载于:https://www.cnblogs.com/jason3361/p/10981253.html

    展开全文
  • REGEXP函数

    2019-12-25 21:24:55
    正则表达式往往可以提高工作效率,淡然也要考虑性能。 有个需求,按照一定规则,找出所有满足的OS。 1、机场编码+特定编码+数字+特定编码结尾 ... t.`name` REGEXP '^(dgg|ngk)(ci|fc)[0-9]' AND t.`name` R...

    正则表达式往往可以提高工作效率,淡然也要考虑性能。

    有个需求,按照一定规则,找出所有满足的OS。

    1、机场编码+特定编码+数字+特定编码结尾
    例如:dgg|ngk+ci|fc+数字+fm|fm1结尾的机器

    SELECT
    	* 
    FROM
    	t_node_agent t 
    WHERE
    	t.`name` REGEXP '^(dgg|ngk)(ci|fc)[0-9]' 
    	AND t.`name` REGEXP '(fm|fm1|nsc)$';
    

    具体细节后续补充

    展开全文
  • mysql 5中的REGEXP函数在mysql中,可以使用正则表达式去进行匹配,比如在如下的场景,是十分有用的:比如有如下的两个表employee_hobbyid hobbies--- --------1 Travelling2 Suring the Internet3 Reading4 Swimming...

    mysql 5中的REGEXP函数

    在mysql中,可以使用正则表达式去进行匹配,比如在如下的场景,是十分有用的:

    比如有如下的两个表

    employee_hobby

    id     hobbies

    --- --------

    1      Travelling

    2     Suring the Internet

    3     Reading

    4     Swimming

    5     Meeting Friends

    6     Cooking

    . .

    . .

    10   Watching Movie

    employee

    id    hobby_ids

    --- ---------

    1     1,4,3,6,10

    2    1,3,4,10

    3    7

    . .

    . .

    10   3,5,6,9

    employee表记录了某个员工的爱好有哪些,这里不是用典型的一对多来存储,而是用

    逗号来进行分隔

    那么,要找的是:

    1) 有哪些人有4号的爱好

    SELECT id FROM employee WHERE hobby_ids REGEXP "[[:<:>:]]"

    注意:

    [[:<:>:]]

    这些标记表示word边界。它们分别与word的开始和结束匹配。word是一系列字字符,其前面和后面均没有字字符。字字符是alnum类中的字母数字字符或下划线(_)。

    2)查找同时有这些爱好的:

    SELECT id FROM employee WHERE hobby_ids REGEXP "[[:<:>:]]"

    欢迎大家阅读《mysql 五中的REGEXP函数_mysql》,跪求各位点评,by 搞代码

    e7ce419cf2d6ad34d01da2ceb8829eed.png

    微信 赏一包辣条吧~

    023a57327877fb4402bcc76911ec18ea.png

    支付宝 赏一听可乐吧~

    展开全文
  • MATLAB 正则表达式regexp函数使用

    千次阅读 2019-08-18 16:51:31
    本文介绍MATLAB正则表达式regexp函数常见使用方法。 startIndex = regexp(str,expression) 这个语句会返回所有符合条件的字符串的第一个字符的位置,注意是所有符合的。

    本文介绍MATLAB正则表达式regexp函数常见使用方法。

    1. startIndex = regexp(str,expression)
      这个语句会返回所有符合条件的字符串的第一个字符的位置,注意是所有符合的。
    str = 'bat cat can car coat court CUT ct CAT-scan';
    expression = 'c[aeiou]+t';
    startIndex = regexp(str,expression)

    在这里插入图片描述
    2. [startIndex,endIndex] = regexp(str,expression)
    这个语句返回起始位置和结束位置,注意是所有符合的。

    在这里插入图片描述
    注意: 如果输入为元胞数组,那么返回的也是元胞数组,例如:

    str = {'Madrid, Spain','Romeo and Juliet','MATLAB is great'};
    capExpr = '[A-Z]';
    capStartIndex = regexp(str,capExpr);

    在这里插入图片描述
    3. matchStr = regexp(str,expression,‘match’)
    用于返回符合条件的字符串,而不是索引。 ‘match’是取词。

    str = 'EXTRA! The regexp function helps you relax.';
    expression = '\w*x\w*';
    matchStr = regexp(str,expression,'match')


    4. splitStr = regexp(str,expression,‘split’)
    用于在指定位置将字符串分开

    str = ['Split ^this text into ^several pieces'];
    expression = '\^';
    splitStr = regexp(str,expression,'split') % 在有^处分割

    在这里插入图片描述
    5. [match,noMatch] = regexp(str,expression,‘match’,‘split’)
    同时利用’match’和’split’两种方式,用两个输出参数接收,第一个为符合条件的字符串,第二个为剩下的字符串,由符合条件的字符串作为分割界限。

    str = 'She sells sea shells by the seashore.';
    expression = '[Ss]h.';
    [match,noMatch] = regexp(str,expression,'match','split')

    在这里插入图片描述
    6. [tokens,matches] = regexp(str,expression,‘tokens’,‘match’)
    tokens返回捕获的字符串,matches返回匹配的字符串。

    str = '<title>My Title</title><p>Here is some text.</p>';
    expression = '<(\w+).*>.*</\1>';
    [tokens,matches] = regexp(str,expression,'tokens','match');

    在这里插入图片描述
    从上图总我们可以看到,tokens返回的是括号中捕获到的内容,而matches返回的是符合整个表达式字符串。

    1. matchWithIgnorecase = regexp(str,expression,‘match’,‘ignorecase’)
      ignorecase 这个参数用来指定不区分大小写的。

    2. tokenNames = regexp(str,expression,‘names’);
      用于给捕获到的字符串命名,最后用结构体存储。

    str = '01/11/2000  20-02-2020  03/30/2000  16-04-2020';
    expression = ['(?<month>\d+)/(?<day>\d+)/(?<year>\d+)|'...
                  '(?<day>\d+)-(?<month>\d+)-(?<year>\d+)'];
    tokenNames = regexp(str,expression,'names');  % ?<name> 是将符合这个表达式的字符串命名为name

    在这里插入图片描述
    正则表达式的详细使用方法请见

    展开全文
  • JS-RegExp函数

    2018-07-22 14:09:30
    项目中遇到一些的字符串处理场景: 对整型金额进行千分位格式化,如:1,000 表单字段校验,如姓名只能是中文且长度范围是[2,4] ...一、RegExp函数 正则表达式专门用于描述字符串的字符组合格式。我们经常...
  • 在MySQL中,REGEXP_LIKE()函数用于确定字符串是否匹配正则表达式。如果字符串与提供的正则表达式匹配,函数返回1;如果不匹配,返回0。语法:REGEXP_LIKE(expr, pat[, match_type])其中expr是输入字符串,pat是测试...
  • oracle11g的regexp函数

    2018-04-27 11:37:00
    1.判断是否是数字 regexp_Like select * from (select 'abc' s1 from dual union all select '789456' s1 from dualunion all select '8907a7' s1 from dualunion all select '3' s1 from dualunion all select '' ...
  • // 再来一个 Sqlite3 的扩展:实现 REGEXP函数和包含字符串查找的函数 CONTAIN // ************************************* //// sqlite3 extend// By Ceja// ************************************* //#include ".....
  • mysql 5中的REGEXP函数

    2014-06-01 09:20:00
    在mysql中,可以使用正则表达式去进行匹配,比如在如下的场景,是十分有用的: 比如有如下的两个表 employee_hobby id hobbies ... SELECT id FROM employee WHERE hobby_ids REGEXP "[[:]](1|4|10)[[:>:]]
  • RegExp函数的含义

    千次阅读 2008-05-10 22:11:00
    本对象包含正则表达式模式以及表明如何应用模式的标志。 语法 1 re = /pattern/[flags] 语法 2 re = new RegExp("pattern",["flags"]) 参数 re 必选项。将要赋值为正则表达式模式的变量名。
  •  在上述代码中,web_reg_save_param函数起到了关联作用,必须在调用web_url之前使用,它的作用类似一个注册机制。调用了语句web_reg_save_param("filecontent", "LB=", "RB=", "Search=BODY", LAST);之后, ...
  • RegExp 构造函数

    2018-01-19 22:07:56
    RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况。 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。 var regex = new RegExp('xyz', 'i');// 等价于var regex = /...
  • Oracle中REGEXP SUBSTR函数

    2019-02-25 14:12:15
    Oracle中REGEXP SUBSTR函数
  • 5.1、RegExp构造函数

    2020-07-22 08:40:23
    es5 中, RegExp 构造函数的参数有两种情况 第一种:参数是字符串,这时第二个参数表示正则表达式的修饰符(flag) 第二种:参数是一个正则表达式,这时会返回一个原有正则表达式的拷贝 但是 es5 不允许此时...
  • Oracle的REGEXP REPLACE函数简单用法
  • Oracle的REGEXP SUBSTR函数简单用法
  • Oracle的REGEXP INSTR函数简单用法

    千次阅读 2018-11-12 20:19:58
    Oracle的REGEXP INSTR函数简单用法
  • RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性)。这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。关于这些属性的另一个独特之处,就是可以通过两种...
  • REGEXP_SUBSTR函数

    2018-03-09 15:22:42
    oracle (10G+) REGEXP_SUBSTR函数*分割字符串函数*REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式__position :起始位置,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,247
精华内容 2,098
关键字:

regexp函数