java 正则表达式匹配数字_java正则表达式匹配所有数字的案例
用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9])
(
[1-9] :匹配1~9的数字;
\d :匹配数字,包括0~9;
* :紧跟在 \d 之后,表明可以匹配零个及多个数字;
\. :匹配小数点;
? :紧跟在 \. 之后,表明可以匹配零个或一个小数点;
0 :匹配一个数字0;
)
其中的 [1-9]\d*\.?\d* 用以匹配诸如:1、23、34.0、56.78 之类的非负的整数和浮点数;
其中的 0\.\d*[1-9] 用以匹配诸如:0.1、0.23、0.405 之类的非负浮点数;
private List
GetTmpFieldsList(List
FieldsList,String tmptableName,String IndexName) {
List
maps = new ArrayList<>();
for(String field :FieldsList){
//必须包含传入的标识符,同时要包含数字
if(field.toLowerCase().contains(tmptableName.toLowerCase())){
FieldList e = new FieldList();
String [] fieldArray = field.split("\\.");//带数字的string
field = field.replaceAll("\\_?\\d+", ""); //去掉下划线加数字 得有效的物理名
String [] fieldArray2 = field.split("\\."); //不带数字的string
Pattern p = Pattern.compile("\\d+"); //得到字符串中的数字
Matcher m = p.matcher(fieldArray[1]);
if(m.find()){
int key = Integer.parseInt(m.group());
e.setCaseValue(key);
if(StringUtils.isEqual(fieldArray2[1], IndexName)){ //for BAT203
e.setField("CHECK_POSITION"); //?目物理名
}else{
e.setField(fieldArray2[1]); //?目物理名
}
e.setFieldName(fieldArray[1]); //?目物理名?e名
maps.add(e);
}
/**else{ 只有后面带数字的才可以
if(StringUtils.isEqual(fieldArray2[1],IndexName)){ //for BAT203
e.setField("CHECK_POSITION"); //?目物理名
}else{
e.setField(fieldArray2[1]);
}
e.setFieldName(fieldArray[1]);
maps.add(e);
}**/
}
}
//Add ACE商品マスタ.更新フラグ
return maps;
}
补充知识:关于fasterxml-jackson发生Can not deserialize instance of异常原因验证
这两天线上有大量的
java.lang.IllegalArgumentException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
at [Source: N/A; line: -1, column: -1]错误发生。
有经验的人一看,就知道是对象属性转换发生异常了。为了把这个错误的根本原因找到。
只能上代码模拟了。
/**
* Created by changle on 17/1/9.
*/
@Slf4j
public class JSONTest {
public static void main(String[] args) {
testAtoB();
//testAtoB() 发生:Can not deserialize instance of com.test.JSONTest$Hobby out of START_ARRAY token
testBtoA();
//testBtoA() 发生:Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
}
public static void testAtoB(){
List hobbies = new ArrayList<>();
Random random = new Random();
for(int i=0;i<3;i++){
Hobby hobby = new Hobby(random.nextInt(),"测试名称","测试类型",random.nextInt(100));
hobbies.add(hobby);
}
StudentA studentA = new StudentA();
studentA.setAge(23);
studentA.setFromCity(true);
studentA.setMoney(3000);
studentA.setName("张三");
studentA.setHobbies(hobbies);
try {
String str = JSON.json(studentA);
log.info("str={}",str);
//list转换单个projo
StudentB studentB = JsonUtil.jsonObject(str, StudentB.class);
log.info("studentB.name:{}",studentB.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testBtoA(){
Random random = new Random();
Hobby hobby = new Hobby(random.nextInt(), "测试名称", "测试类型", random.nextInt(100));
StudentB studentB2 = new StudentB();
studentB2.setAge(23);
studentB2.setFromCity(true);
studentB2.setMoney(3000);
studentB2.setName("张三");
studentB2.setHobbies(hobby);
String str2 = null;
try {
str2 = JSON.json(studentB2);
//单个projo转换list
StudentA studentA2 = JsonUtil.jsonObject(str2, StudentA.class);
log.info("studentB.name:{}", studentA2 == null ? "" : studentA2.getName());
} catch (IOException e) {
e.printStackTrace();
}
}
@Data
public static class StudentA{
private String name;
private int age;
private long money;
private boolean isFromCity;
private List hobbies;
}
@Data
public static class StudentB{
private String name;
private int age;
private long money;
private boolean isFromCity;
private Hobby hobbies;
}
@Data
public static class Hobby{
private long hId;
private String hName;
private String type;
private int score;
public Hobby(){}
public Hobby(long hId,String hName,String type,int score){
this.hId = hId;
this.hName = hName;
this.type = type;
this.score = score;
}
}
}
结论:
Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
该错误是因为目标类属性keyX需要ArrayList类型的,待转换的json串里属性名keyX对应的,不是一个ArrayList集合,而是单个 POJO。
Can not deserialize instance of com.test.JSONTest$Hobby out of START_ARRAY token
该错误是因为目标类属性keyX需要JSONTest$Hobby类型的,待转换的json串里属性名keyX对应的,不是一个POJO对象,而是ArrayList集合。
以上这篇java正则表达式匹配所有数字的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自学编程网。
java 正则表达式匹配数字_java正则表达式匹配所有数字的案例相关推荐
- java正则表达式所有字符串_java正则表达式如何获取字符串中所有匹配内容
java正则表达式如何获取字符串中所有匹配内容以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java正则表达式如何获取 ...
- java正则表达式 匹配%号_java正则表达式匹配带有括号的电话号为什么匹配不上...
最近在学习正则表达式,尝试着同事匹配三种不同的电话号,类似如下: (012)-79461234 012-79461234 01279461234 我写的匹配方式: \(?0\d{2}[) -]?\d{ ...
- java 正则表达式 匹配括号_java正则表达式匹配带有括号的电话号为什么匹配不上...
最近在学习正则表达式,尝试着同事匹配三种不同的电话号,类似如下: (012)-79461234 012-79461234 01279461234 我写的匹配方式: \(?0\d{2}[) -]?\d{ ...
- java正则匹配括号_java正则表达式方括号匹配的认识
在java正则表达式的学习中,方括号匹配是一个重点,在这里为了让学员们对方括号匹配这个知识点有更深刻的认识和了解,广州达内的老师将为你进行一次深刻的讲解. 在正则表达式中,[]是对指定的元素进行匹配, ...
- java 正则 小括号_java正则表达式匹配小括号内的内容
正则表达式用来指定字符串模式.当你需要定位匹配某种模式的字符串时就可以使用正则表达式.例如,我们下面的一个例程就是在一个HTML文件中通过查找字符串模式来定位所有的超链接. 当然,为了指定一种 ...
- java正则表达式的用法_Java 正则表达式的使用
Java 正则表达式的使用 1:正则表达式语法大全 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.例如,"n"匹配字符"n".&quo ...
- java正则表达式用法示例_Java正则表达式教程及示例
java正则表达式用法示例 当我开始使用Java时,正则表达式对我来说是一场噩梦. 本教程旨在帮助您掌握Java正则表达式,并让我定期返回以刷新我的正则表达式学习. 什么是正则表达式? 正则表达式定义 ...
- java 正则判断二进制_java正则表达式
1.java正则表达式 \\d表示数字 \\d+表示一到多个数字 \\d*表示匹配一个数字零次或者多次 \\d?匹配一个数字零次或一次 \w 等价于[A-Za-z0-9] \W等价于[^A-Z ...
- java pattern详解_JAVA正则表达式:Pattern类与Matcher类详解
以下我们就分别来看看这两个类: 一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 1 ((A) ...
最新文章
- BOS项目 第2天(BaseDao、BaseAction、用户登录、自定义strust登录拦截器)
- 开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势
- php mysql sample,GitHub - BensonWuu/php-apache-mysql-sample
- .NET chart 毫秒级坐标轴
- 用“大白话”精准搜图,OpenAI的CLIP惊艳了所有人 | 在线可玩
- mysql limit 限制查询记录数
- 内存只有100G,要全表扫描一个200G大表,会不会把内存用完?
- 10.5做题——全排列(初赛复习)
- vmware虚拟机不识别usb设备
- css3 上线圆角效果
- MSSQLSERVER查询分析器连接的方法
- linux6.5防火墙开端口,Linux(CentOS6.5) 开放端口,配置防火墙
- Asset mangagement Resources(完善中)
- Java中的变量分类_Java十四天零基础入门-Java变量的作用域
- 基台和种植体如何连接_种植牙所用的材料是什么?安不安全?种植牙手术后该如何护理?...
- 英文简历模板计算机专业,计算机专业毕业生英文简历模板
- 微信小程序源代码_下厨房菜谱APP
- bootstrap 按钮颜色 class=“btn btn-success“
- mysql 获取农历年份_iOS 获取公历、农历日期的年月日
- JAVA 中配置IKAnalyzer扩展词库和停止词库