導航:首頁 > 編程語言 > 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相關的資料

熱點內容
程序員怎麼跟男朋友說我愛你 瀏覽:309
單片機頻率變化 瀏覽:428
哪個app可以看賭神 瀏覽:466
rstudiopython 瀏覽:127
團隊如何開發伺服器 瀏覽:440
php選擇資料庫的函數 瀏覽:772
dhcp伺服器新增地址 瀏覽:930
程序員跑三個月外賣 瀏覽:941
linux配置tomcat的jdk路徑 瀏覽:363
液體壓縮公式 瀏覽:777
php開發後台管理系統 瀏覽:360
python二分查找遞歸 瀏覽:447
微信如何發視頻不壓縮 瀏覽:902
河北2021美術高考綜合分演算法 瀏覽:606
如何為電腦文件夾加密 瀏覽:835
電腦自啟動應用命令 瀏覽:690
php判斷一個文件是否存在 瀏覽:829
php導出xml文件 瀏覽:904
7個文件夾解壓 瀏覽:383
python實現機器碼 瀏覽:356