正则表达式匹配两个指定字符串中间的内容

时间:2025-02-15 08:55:34

遇到的问题

一个日志文件中account_system.log_bak的数据,简化后的内容如下:

 

"compId":1234,"compName":"深圳市xx有限公司"

"compId":12345,"compName":"深圳市xx2有限公司"

"compId":12346,"compName":"深圳市xx3有限公司"

"compId":12347,"compName":"深圳市xx4有限公司"

需要把这个文本中的 "compId":和,"compName 中间的数字 1234 找出来。

 

很明显,存在正则匹配。

但是,习惯用java处理字符串了。

 

第1种方法:

先截头,再截尾。中间的 就是 数字。

//"compId":1234,"compName":"深圳市xx有限公司"
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("E:\\account_system.log_bak");
		BufferedReader bf = new BufferedReader(fr);
		String str="";
		// 按行读取字符串
		while ((str = ()) != null) {
			getNum(str);
		}
		();
	}
	
	//"compId":2788,
	public static int getNum(String str){
		if(str==null){
			return 0;
		}
		//先截头,再截尾
		String dest="\"compId\":";
		int index=(dest);
		if(index!=-1){
			String tail=	(index+());
			//(tail);
			int commaIndex=(",");
			String destNum = (0,commaIndex);
			(destNum);
		}
		return 0;
	}
	

第2种方法:

用正则匹配,不太会写,参考网上的资料。

   //"compId":2788,
	public static int getNum(String str){
		if(str==null){
			return 0;
		}
		String rgex = "\"compId\":(.*?),\"compName\"";
		String str2=(str, rgex);
		(str2);
		return 0;
	}
public class DealStrSub {
	/**
	 * 正则表达式匹配两个指定字符串中间的内容
	 */
	public static List<String> getSubUtil(String soap, String rgex) {
		List<String> list = new ArrayList<String>();
		Pattern pattern = (rgex);// 匹配的模式
		Matcher m = (soap);
		while (()) {
			((1));
		}
		return list;
	}

	/**
	 * 返回单个字符串,若匹配到多个的话就返回第一个,方法与getSubUtil一样
	 * 
	 * @param soap
	 * @param rgex
	 * @return
	 */
	public static String getSubUtilSimple(String soap, String rgex) {
		Pattern pattern = (rgex);// 匹配的模式
		Matcher m = (soap);
		while (()) {
			return (1);
		}
		return "";
	}

	/**
	 * 测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		String str = "abc3443abcfgjhgabcgfjabc";
		String rgex = "abc(.*?)abc";
		(getSubUtil(str, rgex));
		(getSubUtilSimple(str, rgex));
	}
}

以上代码,正确性没问题。

自己有修改优化,单独维护。

 

参考资料:

java 正则表达式获取指定两个字符串之间内容

/u013144287/article/details/72845247

Java中文本文件的读取(按行读取)

/milletguo/article/details/80144290