Java 正则表达式和 Perl 的是最为相似的,正则表达式就是规则表达式。
创新互联建站是一家专注于成都网站设计、网站制作与策划设计,黄陵网站建设哪家好?创新互联建站做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:黄陵等地区。黄陵做网站价格咨询:13518219792
Java中正则表达式与之前使用的Python是有区别的,区别在于Java对于反斜线(\)处理的不同。 在Python中”\d”表示 匹配一位数字(0-9),而Java中匹配一位数字(0-9),需要的正则表达式为”\\d”。 不过换行符和制表符只需要单反斜线“\n\t”。
正则表达式定义了字符串的模式。可以用来搜索、编辑或处理文本。不仅限于某一种语言,但是在每种语言中有细微的差别。
如果你想正则匹配上中间的数字,请把表示数量的*改成+,表示至少出现一次。
*的数量可以是0次,这个时候"[0-9]*"匹配了个空串。
为了验证这个,你可以用正则"([0-9]*)([a-z]+)"试试,看看第二个括号匹配的内容是“aa”还是“bb”
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
下面介绍具体的方法。
1、步骤一 : 新建一个工程和类
我们在这个类中开发相关的代码,先看看 java.util.regex 这个包吧。
2、步骤二 : 类 Pattern 的使用
类Pattern , 其一个对象就代表一种指定的正则表达式,我们通过这个类和一些正则表达式的规则来生成自己想要的字符串匹配规则!
这个类,你无法通过 new 来创建对象,其提供了一个静态方法 compile("正则规则串")来创建对象, 比如我们想要一个以 "java" 开头的字符串匹配规则,我们会用如下代码 Pattern 对象 :
Pattern pattern = Pattern.compile("^java");
注意 : ^ 这个符号是正则表达式中的规则,表示字符串的开头!关于其他规则,我们后面会有相关经验给大家逐一介绍!
3、步骤三 : 类 Matcher 的使用
类 Matcher, 代表一个串在特定Pattern对象下的匹配结果,我们通过这个结果可以知道这个串是否符合我们的要求 (我们的具体要求在 Pattern 对象中体现!)。使用方法为 :
// 先构建一个特定的 Pattern 对象
Pattern pattern = Pattern.compile("^java");
// 调用 Pattern 对象的 matcher 方法,传入一个串,得到匹配结果!
Matcher matcher = javaPrefixPattern.matcher("一个字符串");
4、步骤四 : 测试和总结
运行代码,查看程序运行效果!正则表达式的整个使用框架就是这样,其不同的应用场景基本就是不同的匹配规则!
总结 :正则表达式的彪悍,主要在于其很多成熟的规范的语义规则,通过这些规则的灵活使用,我们可以把一种复杂的匹配需求用一个规则串表达出来!
package baiduTest2;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JSONProcess {
public JSONArray getJsonObject(String str){
JSONArray jo=JSONArray.fromObject(str);
return jo;
}
public void writeExcel(JSONArray ja) throws Exception{
Map map=new LinkedHashMap();
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");
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格并设置表格默认列宽度为25个字节
HSSFSheet sheet = workbook.createSheet("sheet1");
sheet.setDefaultColumnWidth((short) 25);
// 生成表格标题
HSSFRow titleRow = sheet.createRow(0);
int columnLength1 = 20;
HSSFCell[] title = new HSSFCell[columnLength1];
for (int i = 0; i columnLength1; i++) {
title[i] = titleRow.createCell((short) i);
title[i].setEncoding(HSSFCell.ENCODING_UTF_16);
title[i].setCellValue("");
}
// 生成表格表头行
HSSFRow headerRow1 = sheet.createRow(0);
HSSFCell[] header1 = new HSSFCell[columnLength1];
Iterator it=map.keySet().iterator();
int count=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++;
}
// 遍历集合数据,产生数据行
FileOutputStream out = new FileOutputStream("E:/excelTest.xls");
int cellNum = 0;
if (ja != null) {
for (int rownum = 0; rownum ja.size(); rownum++) {
HSSFRow row = sheet.createRow(rownum + 1);
JSONObject json = (JSONObject) ja.getJSONObject(rownum);
HSSFCell[] cell = new HSSFCell[columnLength1];
int counter=1;
cell[0] = row.createCell((short) 0);
cell[0].setEncoding(HSSFCell.ENCODING_UTF_16);
cell[0].setCellValue(json.get("id").toString());
JSONArray ja1 = (JSONArray) json.getJSONArray("tags");
for(int j=0;jja1.size();j++){
JSONObject json1=(JSONObject)ja1.get(j);
Iterator it1=json1.entrySet().iterator();
String key=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();
}
public static void main(String[] args) {
JSONProcess jsonProcess=new JSONProcess();
String str="[{\"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\"}]}]";
JSONArray ja=jsonProcess.getJsonObject(str) ;
try {
jsonProcess.writeExcel(ja);
} catch (Exception e) {
// TODO Auto-generated catch block
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包你自己弄吧。在百度搜索就行。