java正则表达式匹配数字范围_在java中怎么利⽤正则表达式匹
配数字
在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){
//必须包含传⼊的标识符,同时要包含数字
LowerCase().LowerCase())){
FieldList e = new FieldList();
String [] fieldArray = field.split("\\.");//带数字的string
field = placeAll("\\_?\\d+", ""); //去掉下划线加数字 得有效的物理名
String [] fieldArray2 = field.split("\\."); //不带数字的string
Pattern p = Patternpile("\\d+"); //得到字符串中的数字
Matcher m = p.matcher(fieldArray[1]);
if(m.find()){
int key = Integer.up());
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 {
时间正则表达式javapublic static void main(String[] args) {
testAtoB();
//testAtoB() 发⽣:Can not deserialize instance st.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 Int(),"测试名称","测试类型",Int(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:{}",Name());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testBtoA(){
Random random = new Random();
Hobby hobby = new Int(), "测试名称", "测试类型", Int(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 ? "" : Name()); } 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.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 st.JSONTest$Hobby out of START_ARRAY token
该错误是因为⽬标类属性keyX需要JSONTest$Hobby类型的,待转换的json串⾥属性名keyX对应的,不是⼀个POJO对象,⽽是ArrayList集合。
关于在java中怎么利⽤正则表达式匹配数字问题的解答就分享到这⾥了,希望以上内容可以对⼤家有⼀定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云⾏业资讯频道了解更多相关知识。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论