导航:首页 > 编程语言 > java正则json

java正则json

发布时间:2022-11-29 17:13:37

A. 求验证json格式的正则表达式

你的json的具体格式,用什么字符分隔等尽量说清楚。给的条件越多写出的正则针对性就越强。

补充:
"^\[(\{name:"(.{0,8})",age:([0-9]|[1-9][0-9]),sex:"([男女])",Remark:"(.{0,30})"\},)*(\{name:"(.{0,8})",age:([0-9]|[1-9][0-9]),sex:"([男女])",Remark:"(.{0,30})"\})\]$"(不含引号)

对name和Remark的长度做了限制,最短为0个字符,最长可以到30个(name的最大长也可以改到30),原因是直接用.*?匹配时可能出现跨过一个{}的匹配情况。本人能力有限,您将就着用。

对age限定为0~99,十位数不为零,sex仅限男女,如有特殊需求请自行添加。

另外,在java等程序中使用时注意要对“\”转义。

B. 如何用正则表达式提取url返回的jason数值

正则表达式:(?<="access_token":)"(.+?)"

取第一捕获组的数据,就行了.

完整的Java程序如下:

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

publicclassFFF{

publicstaticvoidmain(String[]args){

Strings="{"access_token":"","token_type":"client_credentials","expires_in":3600,"example_parameter":null}";

Stringregex="(?<="access_token":)"(.+?)"";

Patternp=Pattern.compile(regex);

Matcherm=p.matcher(s);

while(m.find()){

System.out.println(m.group(1));

}

}

}

运行结果:

其实用json对象解析更简单,完整的Java程序如下:

importorg.json.JSONObject;

publicclassFFF{

publicstaticvoidmain(String[]args){

Strings="{"access_token":"","token_type":"client_credentials","expires_in":3600,"example_parameter":null}";

JSONObjectjsonObj=newJSONObject(s);

Stringstr=(String)jsonObj.get("access_token");

System.out.println(str);

}

}

运行结果:

C. 正则表达式、xpath、BeautifulSoup和JSONPath的区别

1.正则表达式是进行内容匹配,将符合要求的内容全部获取;xpath()能将字符串转化为标签,它会检测字符串内容是否为标签,但是不能检
测出内容是否为真的标签;Beautifulsoup是Python的一个第三方库,它的作用和 xpath 作用一样,都是用来解析html数据的相比之下,
xpath的速度会快一点,因为xpath底层是用c来实现的
2.三者语法不同,正则表达式使用元字符,将所有获得内容与匹配条件进行匹配,而xpath和bs4将获取的解析后的源码进行按条件筛选,筛选
出想要的标签即根据标签属性来找到指定的标签,之后对标签进行对应内容获取。

D. java中正则表达式如何使用比如判断一个字符串是否满足某种格式,给个详细点的例子

按照你的要求给出的Java正则表达式的例子如下

//下面这个正则表达式匹配不能以.css,.html,.js,.json或者.xml结尾的字符串
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassCC{
publicstaticvoidmain(String[]args){
Strings="xxxx.js.jss";//目标字符串
Stringregex="((?!\.((css)|(html)|(js)|(json)|(xml))$).)+";//正则表达式
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
if(m.matches()){
System.out.println("匹配");
}else{
System.out.println("不匹配");
}
}
}

运行结果

匹配

E. java用正则表达式截取json多余的字符串

这样的话,只需要截取需要的字符串即可。

举例:

publicstaticvoidmain(String[]args){
Stringparse="[{CSTM_NO:"11118",CSTM_NAME:"广东XX电力有限公司",FIX_GNL:"111810158",FIX_ACC:"D201306070003",OP_FLAG:"正常",BUSS_KIND_NAME:"三个月定期存款",BAL:"25,178,750.00",AVAL_BAL:"25,178,750.00",OP_DATE:"2013-06-07",DUE_DATE:"2013-12-07",ROWNUM_:1,idx:0},{CSTM_NO:"11118",CSTM_NAME:"广东XX电力有限公司",FIX_GNL:"111810158",FIX_ACC:"D201306070002",OP_FLAG:"正常",BUSS_KIND_NAME:"三个月定期存款",BAL:"25,178,750.00",AVAL_BAL:"25,178,750.00",OP_DATE:"2013-06-07",DUE_DATE:"2013-12-07",ROWNUM_:3,idx:2},{CSTM_NO:"11118",CSTM_NAME:"广东XX电力有限公司",FIX_GNL:"111810158",FIX_ACC:"D201306070005",OP_FLAG:"正常",BUSS_KIND_NAME:"三个月定期存款",BAL:"25,178,750.00",AVAL_BAL:"25,178,750.00",OP_DATE:"2013-06-07",DUE_DATE:"2013-12-07",ROWNUM_:4,idx:3}]";
Stringregex="FIX_ACC:(.*?),OP_FLAG";//别忘了使用非贪婪模式!
Matchermatcher=Pattern.compile(regex).matcher(parse);
while(matcher.find())
{
Stringret=matcher.group(1);
System.out.println(ret);
}
}

F. Java正则 提取指定字符串中的文字

用JSON来做,把上面的先转化为JSON,然后获取到URL的值在截取。
比如:String s = " "action": {
"action": "loadpage",
"list_name": "sale",
"pagetype": "childcate",
"showsift": true,
"title": "二手物品",
"showpub": true,
"url": "$rescachehelper.getResource(25)&topcate=sale"
}";
把里面的双引号先转为单引号

JSONObject json = JSONObject.fromObject(s);
String value = json.get("action");
Stirng url = value.get("url");
然后对url的值进行截取:
String no = url.substring(url.indexOf("("),url.indexOf(")"));
....这里为你处理的方法,最后得到一个新的url为newUrl
然后设置到json里面去
value.put("url",newUrl);
最后在把json变为字符串的话:
json.toString();

G. json正则式替换 用java替换

import java.util.regex.Pattern

String jsonText="<你的Json的text>";
//以【"result": 1】分割json文本
Pattern p=Pattern.compile(",\s*\"result\": 1");
String[] mags=p.split(jsonText);
if (mags.length>1)
{
//保留最后出现的"result": 1
mags[mags.length-1]=",\n\"result\": 1"+mags[mags.length-1];
}
//重新组合
StringBuffer s=new StringBuffer();
for (i=0;i<mags.length;i++)
{
s.append(mags[i]);
}
String result=s.toString(); //结果

H. Java中如何使用正则匹配一对中括号中的引号冒号(":),目的是在冒号后加个空格

我觉得楼上那位说把中括号里的取出来处理了再弄回去可行啊,把原字符串一分为三,把中间处理了再组合起来,但是我写的这个很low只能处理一次中括号:

I. java 正则匹配

packageTest2;

importjava.io.FileOutputStream;
importjava.util.Iterator;
importjava.util.LinkedHashMap;
importjava.util.Map;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

importnet.sf.json.JSONArray;
importnet.sf.json.JSONObject;

publicclassJSONProcess{
publicJSONArraygetJsonObject(Stringstr){
JSONArrayjo=JSONArray.fromObject(str);
returnjo;
}
publicvoidwriteExcel(JSONArrayja)throwsException{
Mapmap=newLinkedHashMap();
map.put("id","id");
map.put("tag1","tag1");
map.put("tag2","tag2");
map.put("tag3","tag3");
map.put("tag4","tag4");
map.put("tag5","tag5");
map.put("tag6","tag6");
map.put("tag7","tag7");
map.put("tag8","tag8");
HSSFWorkbookworkbook=newHSSFWorkbook();

//生成一个表格并设置表格默认列宽度为25个字节
HSSFSheetsheet=workbook.createSheet("sheet1");

sheet.setDefaultColumnWidth((short)25);
//生成表格标题
HSSFRowtitleRow=sheet.createRow(0);
intcolumnLength1=20;
HSSFCell[]title=newHSSFCell[columnLength1];
for(inti=0;i<columnLength1;i++){
title[i]=titleRow.createCell((short)i);
title[i].setEncoding(HSSFCell.ENCODING_UTF_16);
title[i].setCellValue("");

}

//生成表格表头行
HSSFRowheaderRow1=sheet.createRow(0);
HSSFCell[]header1=newHSSFCell[columnLength1];
Iteratorit=map.keySet().iterator();
intcount=0;
while(it.hasNext()){

header1[count]=headerRow1.createCell((short)count);
header1[count].setEncoding(HSSFCell.ENCODING_UTF_16);
header1[count].setCellValue(map.get(it.next()).toString());

count++;
}

//遍历集合数据,产生数据行
FileOutputStreamout=newFileOutputStream("E:/excelTest.xls");
intcellNum=0;

if(ja!=null){
for(intrownum=0;rownum<ja.size();rownum++){

HSSFRowrow=sheet.createRow(rownum+1);
JSONObjectjson=(JSONObject)ja.getJSONObject(rownum);
HSSFCell[]cell=newHSSFCell[columnLength1];
intcounter=1;
cell[0]=row.createCell((short)0);
cell[0].setEncoding(HSSFCell.ENCODING_UTF_16);
cell[0].setCellValue(json.get("id").toString());
JSONArrayja1=(JSONArray)json.getJSONArray("tags");
for(intj=0;j<ja1.size();j++){
JSONObjectjson1=(JSONObject)ja1.get(j);
Iteratorit1=json1.entrySet().iterator();

Stringkey=it1.next().toString();
cell[counter]=row.createCell((short)counter);
cell[counter].setEncoding(HSSFCell.ENCODING_UTF_16);
cell[counter].setCellValue(key.split("=")[1]);
counter++;

}
}
}
workbook.write(out);
out.close();
}
publicstaticvoidmain(String[]args){
JSONProcessjsonProcess=newJSONProcess();
Stringstr="[{"id":1237869662,"tags":[{"201201310009409169":"沙海","weight":"123"},{"211007220000015286":"惊叹号","weight":"117"},{"201110220006272797":"漫工厂","weight":"5"},{"201102070003148762":"超好看","weight":"28"},{"520":"出版人","weight":"858"},{"2328":"作家","weight":"5632"},{"4029":"盗墓笔记","weight":"57495"},{"16115":"南派三叔","weight":"754"}]},{"id":2899165812,"tags":[{"34735":"学生一族","weight":"124648"},{"12544":"热爱生活","weight":"130120"},{"285":"音乐","weight":"5374344"},{"983":"水瓶","weight":"69854"},{"464":"美食","weight":"19040573"}]}]";
JSONArrayja=jsonProcess.getJsonObject(str);
try{
jsonProcess.writeExcel(ja);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}
}

那是要我写了,我是有多闲啊。

其实这是json结构的字符串啊。在java里面很好处理啊,有现成的类处理这种字符串的。

放到txt或者excel也不难啊。但是代码量挺多的。


你需要的jar包。

commons-beanutils.jar

commons-collections.jar

commons-httpclient.jar

commons-lang.jar

commons-logging.jar

ezmorph-1.0.3.jar

json-lib-2.3-jdk15.jar

poi-2.5.1.jar

因为网络只能上传一个附件,其他jar包你自己弄吧。在网络搜索就行。


J. java正则转义json中双引号

你的JSON本来就有问题吧,怎么可能引号里面还有引号?如果JSON是JS中的,那么双绰号里面可以有单引号,单引号里面也可以有双引号。就像{"地址":"北京市海淀区'中关村南大街'8号"}.
如果JSON在JAVA中,那就用\转义一下。{"地址":"北京市海淀区\"(双引号)中关村南大街\"(双引号)8号"}
或者里面的双引号改成单引号也行{"地址":"北京市海淀区'(单引号)中关村南大街'(单引号)8号"}

阅读全文

与java正则json相关的资料

热点内容
小米sd卡解压 浏览:996
程序员那么可爱陆漓替老袁说情 浏览:28
当女程序员遇见问题 浏览:746
32位编译器什么意思 浏览:355
php多参数函数 浏览:17
通达信板块动作源码 浏览:751
matlab完全自学一本通pdf 浏览:250
php源码本地安装 浏览:961
服务器怎么用不会断电 浏览:301
主从服务器有什么用 浏览:213
jstlpdf 浏览:15
安卓原神在哪个app下载 浏览:808
单片机编程技术什么意思 浏览:104
e点课堂源码 浏览:46
免费打击垫app哪个好 浏览:532
程序员必装的6款软件 浏览:750
基于单片机的遥控器设计 浏览:521
安卓如何取消圆图标 浏览:11
收件服务器怎么样 浏览:48
建筑设计规范pdf 浏览:99