String regit="[1-9]{1,2}[\u6838]";
Pattern abs = Pattern.compile(regit);
String condition="32核";
Matcher mat = abs.matcher(condition);
String str="";
if(mat.matches()) {
str=mat.group(0).split("核")[0];
System.out.println(str);
//2位数字+"G"
regit="[1-9]{1,2}[Gg]";
condition="55g";
abs=Pattern.compile(regit);
mat = abs.matcher(condition);
if(mat.matches()) {
str=mat.group(0).toUpperCase().split("G")[0];
System.out.println(str);
//2位数字+"Mbps"
regit="[1-9]{1,4}[Mm][Bb][Pp][Ss]";
condition="87mbps";
abs=Pattern.compile(regit);
mat = abs.matcher(condition);
if(mat.matches()) {
str=mat.group(0).toUpperCase().split("MBPS")[0];
System.out.println(str);
输出结果:
二、注意事项
1.匹配中文字:核,需要将核,转化为unicode,即:\u6838。(转换地址:
http://www.bejson.com/convert/unicode_chinese/
)
2.单位注意大小写,【Gg】代表匹配大写的G和小写的g
3.不建议直接截取。截取一般情况下是很容易出现异常的,万一得到的数据,只有一个mbp,直接截取了,往往会报错。但是如果先用正则表达式去判断一下,判断通过了,再去执行截取动作的话,这样成功率就比较高。
4.该改造,只针对于简单场景,如果是比较复杂的查询环境,建议使用solr等专业的搜索引擎实现。
业务场景:输入【1核】、【2g】、【3mbps】需要将数字拿到,拼接成为sql语句。一开始考虑用字符串截取,后续思考,用正则biao表达式会更好些,下面直接上代码:一、代码实现package com.test.test;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Arrays;...
正则表达式概述
正则表达式,即处理
字符
串的方法,它以行为
单位
来进行
字符
串的处理操作,正则表达式通过一些特殊符号的辅助,可以让用户轻易的完成【查找、删除、替换】某特定
字符
串的处理过程。
正则表达式基本上是一种表示法,只要程序支持这种表示法,那么该程序就可以用来作为正则表达式的
字符
串处理之用。
注意:正则表达式和通配符并不一样,因为【通配符代表的是 bash 操作接口的一个功能】,但正则表达式则是一种
字符
串处理的表示方式。
基础正则表达式
语系对正则表达式会产生的影响
文件其实记录的仅有 0 和 1,我们
正则拆分
字符
串英文加可能包含小数的数字拆分(带
单位
的数值)
var item = {name:"PM2.5"};
item.nameFirst = item.name.replace(/[^a-zA-Z]/g, '');
item.nameLast = /(\d+(\.\d+)?)/.exec(item.name);
if (item.nameLast && item.nameLa...
public static String number(String name){
name = name.replaceAll("[^(0-9)]", "");
return name;
public static void main(String[] args) {
String name1="";
String name2="";
String a = "浙江YD1
常用正则表达式返回导航页正则语法正则表达式以匹配
字符
串中的数字正则表达式,提取
单位
(数字后面的部分)正则原理
Java
用法matcher的两个方法的区别
返回导航页
返回导航页
正则表达式以匹配
字符
串中的数字
String regex = "[+-]?[0-9.]+";
正则表达式,提取
单位
(数字后面的部分)
String regex = "^.*\\d(.*)$";
Java
用法
//正则表达式以匹配
字符
串中的数字
String regex = "[+-]?
Jakarta-ORO正则表达式库API下载地址:http://archive.apache.org/dist/jakarta/oro/
1. 只允许输入汉字和逗字,并且开头和结尾不能是逗号,
(^[\u4e00-\u9fa5][\u4e00-\u9fa5 ,]*[\u4e00-\u9fa5]$)|^[\u4e00-\u9fa5]$
2. 查找所有的药名+用量+
单位
String aa = "-3419.66万元";
Pattern compile = Pattern.compile(“[-\\+]?([\d+]|[\d+\.\d+])+”);
Matcher matcher = compile.matcher(aa);
aa=matcher.group();
System.out.println(aa);
输出结果:-3419.66
4 m-n位的数字:^\d{m,n}$
5 零和非零开头的数字:^(0|[1-9][0-9]*)$
6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
9 有两位小数的正实数:^[0-9]+(.[0