在java中怎么利用正则表达式匹配数字

发布时间:2020-12-03 17:47:12

来源:亿速云

阅读:58

作者:Leah

在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]); //項目物理名別名

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中怎么利用正则表达式匹配数字相关推荐

  1. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  2. java判断括号是否闭合_用 java 判断 括号是否完全匹配

    用 java 判断 括号是否完全匹配: package emp; import java.util.Stack; public class Parentheses { public static vo ...

  3. java 消除魔鬼数字方法_消除Java详细信息的简便方法

    存档日期:2019年5月14日 | 首次发布:2010年2月16日 Lombok是一个Java™实用程序,使您可以消除Java详细信息,特别是对于普通的旧Java对象(PO​​JO). 它通过使用注释 ...

  4. java原生的编译软件_原生态Java 程序员容易忽视的编程细节

    Java是Java程序设计语言和Java平台的总称,要想学好一门语言,打好基础最关键的,学习一种新的编程语言比学习新的口头语言要容易得多.然而,在这两种学习过程中,都要付出额外的努力去学习不带口音地说 ...

  5. java 判断是否是小数_判断字符串中是否是整数和小数的方法

    判断字符串中是否是整数和浮点数的方法有几种方式,下面分别介绍: 1.用JAVA自带的函数,判断是否为整数 public static boolean isNumeric(String str) { f ...

  6. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

  7. java代码杨辉三角_用java实现杨辉三角的示例代码

    之前有学弟问过我一道java的面试题,题目不算难.用java实现杨辉三角.我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下.在写代码之前,我们先理清下面两个问题. 什么是杨辉三角 杨辉三角 ...

  8. java 多态判断非空_收藏Java 面试题全梳理

    脚本之家 你与百万开发者在一起 来源 | Java建设者(ID:javajianshe) 作者 |cxuan 如若转载请联系原公众号 Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行 ...

  9. java使用缓冲区读取文件_在Java中使用Google的协议缓冲区

    java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...

最新文章

  1. 回归算法 - 线性回归求解 θ(最大似然估计求解)
  2. 青蛙跳台阶c语言递归函数,青蛙跳台阶问题的四种解法
  3. vsftpd Problem with 425 Security: Bad IP connecting 解决
  4. 结构损伤检测与智能诊断 陈长征_阜康危房检测价格
  5. 关系型数据库表结构的两个设计技巧
  6. sql 取重复key中的第一条_SQL每日一题
  7. html5--7-33 阶段练习5
  8. 开源项目SlidingMenu的使用(Android)
  9. java 类似结构体_Java中如何实现类似C++结构体的二级排序
  10. Java MathContext类| hashCode()方法与示例
  11. 小米10pro第二个摄像头下面_小米10至尊纪念版、小米10 Pro对比评测:至尊版“至尊”在哪里?...
  12. iOS-BMK标注覆盖物
  13. 华为云牵手同舟共济伙伴 持续发力构建云核心生态圈
  14. systemtap notes
  15. unity animator 动画 结束后保持位移_Unity动画系统详解9:Target Matching是什么?
  16. 《Master Bitcoin》学习笔记02——比特币的交易模型
  17. 使用include实现布局(layout)复用
  18. java反射机制历史_java的反射机制浅谈
  19. 融合阿里云,牛客助您找到心仪好工作
  20. error: failed to attach to process ID 0问题解决

热门文章

  1. 简历上写CV开源项目,有用吗?
  2. 80%的人都不知道的排版利器,博士生都在用它!
  3. CVPR 2020 | 以局部焦点进行渐进式面部表情编辑
  4. 回归理性 务实推进 迎接AI新时代 2018中国人工智能大会完美收官
  5. AOGNet:基于深度 AND-OR 语法网络的目标识别方法 | PaperDaily #28
  6. poj2955 Brackets 最大括号匹配 区间动态规划
  7. php 查看文件锁定状态_PHP flock 文件锁详细介绍
  8. 华为语音解锁设置_华为手机备忘录的秘密功能
  9. spring boot记录操作日志
  10. PaddleOCR——Docker环境下基于HubServing模式部署Restful API服务(CPU版本)