java正则表达式匹配所有数字的案例

作者:skyxmstar 时间:2023-07-07 02:59:38 

用于匹配的正则表达式为 :([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<Hobby> 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<Hobby> 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;
}
}
}

java正则表达式匹配所有数字的案例

java正则表达式匹配所有数字的案例

结论:

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集合。

来源:https://blog.csdn.net/skyxmstar/article/details/66975983

标签:java,正则表达式,匹配,数字
0
投稿

猜你喜欢

  • 如何在Django配置文件里配置session链接

    2022-09-08 18:17:33
  • Java基础MAC系统下IDEA连接MYSQL数据库JDBC过程

    2024-01-20 10:41:56
  • pytorch 使用半精度模型部署的操作

    2022-04-17 21:33:36
  • python opencv鼠标画矩形框之cv2.rectangle()函数

    2022-03-12 04:33:39
  • 详解Go 依赖管理 go mod tidy

    2024-05-02 16:25:17
  • Python使用微信itchat接口实现查看自己微信的信息功能详解

    2021-07-29 16:07:20
  • 简单谈谈python中的多进程

    2023-05-13 15:19:17
  • python实现文本文件合并

    2022-01-06 04:30:27
  • PyQt 线程类 QThread使用详解

    2021-09-18 05:51:37
  • 浅谈Python中range与Numpy中arange的比较

    2021-05-21 00:15:48
  • 提一个懒人需求——找遥控器的电视

    2009-03-23 18:16:00
  • Python基于多线程操作数据库相关问题分析

    2024-01-26 05:18:21
  • python Multiprocessing.Pool进程池模块详解

    2023-08-25 09:24:59
  • python flask框架详解

    2023-07-20 02:54:52
  • 微信小程序单选框自定义赋值

    2024-04-18 09:49:50
  • Pycharm安装第三方库的超详细步骤

    2023-06-08 14:35:07
  • Vue中导入excel文件的两种方式及使用步骤

    2024-05-21 10:16:20
  • Sql Server 视图数据的增删改查教程

    2024-01-22 07:51:05
  • php源码的安装方法和实例

    2023-07-06 03:31:37
  • Python基于Floyd算法求解最短路径距离问题实例详解

    2022-05-23 09:45:47
  • asp之家 网络编程 m.aspxhome.com