java、js、oracle简单的正则表达式应用,不涉及扩展库,三者正则表达式基础含义基本一致。
\ | 转译,用来转译特殊符号,java中使用 \\ |
---|---|
. | 匹配除"\r\n"之外的任何单个字符 |
? | 匹配0次或者一次 |
* | 匹配0次或多次 |
+ | 匹配一次或多次 |
{n} | 匹配n次 |
{n,} | 匹配不少于n次 |
{n,m} | 匹配不少于n次,不多于m次 |
^ | 在[]中取非,排除[]中的内容 ,用于头部表示匹配开头 |
$ | 匹配结尾 |
\d | 匹配一个数字,等价于[0-9] |
\D | 匹配一个数字,等价于[^0-9] |
\w | 匹配一个单字字符(字母、数字或者下划线)等价于[A-Za-z0-9_] |
\W | 匹配一个非单字字符。等价于[^A-Za-z0-9_] |
\s | 代表任意空白符(换行符,制表符,空格) |
\S | 匹配任意非空字符串 |
() | 重复多个字符该 |
[] | 代表一个字符集合 |
{} | 表示量词的范围的 |
java、js、oracle 正则表达式含义有很多想通的地方,但调用方式,匹配方式却又很多不同。
**JAVA 中应用 **
正则表达式匹配规则: 匹配正数
String rex = “^\d+(\.\d+)?$” ;
//创建一个正则表达式
Pattern p = Pattern.compile(rex);
Matcher m = p.matcher(str);
调用
m.matches()
m.find()
//matches() 完全匹配正则表达式
//find() 对字符串进行匹配,匹配到的字符串可以在任何位置 —但如果字符串与正则表达式完全相同就会返回false,而matches()会返回true
例:
//正数
String rex = "^\\d+(\\.\\d+)?"
//匹配格式 1a1a1a 数字+字母 重复匹配3次 \\1 匹配第一个第一个正则字符已()为准
//具体另起文章介绍
String rex2 = "([0-9][a-z])\\1{2}" ;
String str = "123.45";
Pattern p = Pattern.compile(rex2);
Matcher m = p.matcher(str);
System.out.println(m.matches());
**JS 中应用 **
正则表达式匹配规则: 匹配正数
var reg = /^\d+(.\d+)?$/ ;
var str =‘22222’ ;
reg.test(str) 返回:true
str.match(reg) 返回:22222
reg.test(str):匹配正则表达式,如果能匹配上,返回true,否则返回false
str.match(reg) :将能匹配上正则表达式规则的部分返回,如果没有返回null。通常可用来提取一个字符串中所有特定规则的字符。
**oracle 中应用 **
regexp_like(expression, regexp)
返回值为一个布尔值。如果第一个参数匹配第二个参数所代表的正则表达式,那么将返回真,否则将返回假。
举例: select * from people where regexp_like(name, ‘^J.*$’);
regexp_instr(expression, regexp, startindex, times)
参数startindex表示开始进行匹配比较的位置;参数times表示第几次匹配作为最终匹配结果。
举例: select regexp_instr(‘12.158’, ‘.’) position from dual;
regexp_instr(‘12.158’, ‘.’)用于获取第一个小数点的位置。
regexp_substr(expression, regexp, startindex, times)
截取字符串中匹配的正则表达式
参数startindex表示开始进行匹配比较的位置;参数times表示第几次匹配 ,将对应匹配的内容取出
regexp_replace(expression, regexp, replacement)
将expression中的按regexp匹配到的部分用replacement代替.
在参数replacement中,可以含有后向引用,以便将正则表达式中的字符组重新捕获。例如,某些国家和地区的日期格式可能为“MM/DD/YYYY”,那么可以利用regexp_replace()函数来转换日期格式。
select regexp_replace(‘09/29/2008’, ‘^([0-9]{2})/([0-9]{2})/([0-9]{4})$’, ‘\3-\1-\2’) replace from dual;
regexp_count(expression, regexp)
字符串中匹配正则规则的数量
例子:
select regexp_count(‘小红;小白;小兰’,’[^;]+’) from dual