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

java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字在java中怎么利用正则表达式匹配数字发布时间:2020-12-0317:47:12来源:亿速云阅读:58作者:Leah在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。用于匹配的正则表达式为:([1-9]\d*\.?\d*)|(0\.\d*[1-9])([1-9]:匹配1~9的数字;\d…

大家好,又见面了,我是你们的朋友全栈君。

在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;

}

}

}

486.jpg

487.jpg

结论: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中怎么利用正则表达式匹配数字问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151700.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号