「java正则匹配.」Java正则匹配括号
本篇文章给大家谈谈java正则匹配.,以及Java正则匹配括号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 正则匹配
- 2、java正则表达式如何匹配反斜杠?
- 3、java 正则表达式匹配包含字符串
- 4、Java如何在正则表达式中匹配重复单词
- 5、java正则匹配一个要求字符串
- 6、java正则表达式中的 . 表示匹配任意字符,为什么我这个不对呢?
java 正则匹配
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包你自己弄吧。在百度搜索就行。
java正则表达式如何匹配反斜杠?
可能这个问题对于初学者来说比较头疼,但是只要别人一点可能就明白了。
JAVA中匹配反斜杠的正则表达式的书写方式为:
1
String regex="\\\\";
注意了,一定要写四个反斜杠,第一和第三个反斜杠是用作java字符串的转义,实际上只代表两个反斜杠。
其实只要输入如下代码运行验证一下即可:
System.out.print("\\\\");//输出为 \\
java 正则表达式匹配包含字符串
这个问题不用正则表达式,用JavaString类的contains函数就可以解决了。
具体的Java程序代码如下:
public class CB {
public static void check(String source,String target){
boolean flag=false;
int i;
for(i=0;isource.length();i++){
if(!target.contains(source.charAt(i)+"")){
break;
}
}
if(i==source.length()) flag=true;
if(flag==true){
System.out.println(source+"和"+target+"匹配");
}else{
System.out.println(source+"和"+target+"不匹配");
}
}
public static void main(String[] args) {
check("6482","600000");
check("6482","006400");
check("6482","020864");
}
}
运行结果:
6482和600000不匹配
6482和006400不匹配
6482和020864匹配
Java如何在正则表达式中匹配重复单词
示例显示了如何使用regex.Matcher类的p.matcher()方法和m.group()方法在正则表达式中搜索重复的单词。
import java.util.Scanner;
import java.io.*;
import java.util.regex.*;
import java.util.ArrayList;
public class SearchingDuplicateWords {
public static void main(String[] args) {
ArrayListString manyLines = new ArrayListString();
ArrayListString noRepeat = new ArrayListString();
try {
String s1 = "Hello hello Hello there there past pastures ";
Scanner myfis = new Scanner(s1);
while (myfis.hasNext()) {
String line = myfis.nextLine();
String delim = System.getProperty("line.separator");
String[] lines = line.split(delim);
for (String s : lines) {
if (!s.isEmpty() s != null) {
manyLines.add(s);
}
}
}
if (!manyLines.isEmpty()) {
System.out.print("Original text is:\n");
for (String s : manyLines) {
System.out.println(s);
}
}
if (!manyLines.isEmpty()) {
for (String s : manyLines) {
String result = s.replaceAll("(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+", "$1");
noRepeat.add(result);
}
}
if (!noRepeat.isEmpty()) {
System.out.print("After Remove duplicates:\n");
for (String s : noRepeat) {
System.out.println(s);
}
}
} catch (Exception ex) {
System.out.println(ex);
}
}
}
java正则匹配一个要求字符串
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
private static Pattern pattern;
public static void main(String[] args) {
String source = "abc[javascript|JavaScript|前端用的一个语言|11|12|技术-公司]xyz";
Matcher matcher = getPattern().matcher(source);
if (matcher.find()) {
System.out.println("名称=" + matcher.group(1));
System.out.println("别名=" + matcher.group(2));
System.out.println("简介=" + matcher.group(3));
System.out.println("关键ID=" + matcher.group(4));
System.out.println("同义ID=" + matcher.group(5));
System.out.println("类别=" + Arrays.toString(matcher.group(6).split("-")));
}
}
private static Pattern getPattern() {
if (pattern == null) {
String start = "\\[";
String word = "([^\\|]*)";
String split = "\\|";
String end = "\\]";
String regex = start + word + split + word + split + word + split + word + split
+ word + split + "((技术|公司|产品|人物)(\\-(技术|公司|产品|人物)){0,3})" + end;
pattern = Pattern.compile(regex);
}
return pattern;
}
}
正好group1-6对应你要的数据。
java正则表达式中的 . 表示匹配任意字符,为什么我这个不对呢?
首先,点前面不能有转义符\ ,如果有转义符点就只能匹配小数点了。
其次,点不能写在中括号内,如果写在中括号内,依然只能匹配小数点。
所以,你应该把转义符和中括号去掉,点就能匹配任意字符了。
完整的Java程序如下:
package day01;
public class Test001 {
public static void main(String[] args) {
String regex=".";
String str="w";
System.out.println(str.matches(regex));
}
}
运行结果:
true
关于java正则匹配.和Java正则匹配括号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。