「java正则匹配.」Java正则匹配括号

博主:adminadmin 2023-01-07 10:18:09 585

本篇文章给大家谈谈java正则匹配.,以及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正则匹配括号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。