Java 正则表达式常用惯例

Java 正则表达式常用惯例

1,判断字符串是否是HTML页面

/***
	 * 判断是否是HTML 网页
	 * @param input
	 * @return
	 */
	public static boolean isHTMLWebPage(String input){
		if(ValueWidget.isNullOrEmpty(input)){
			return false;
		}
		return input.matches(".*<html[\\s\\w'\"=]*>.*");
	}

 应用:

@Test
	public void test_isHTMLWebPage(){
		String input="a<html><head><title>";
		System.out.println(RegexUtil.isHTMLWebPage(input));
	}

 ComponentUtil.appendResult(resultTextPane, "返回的状态码:" + respCode, true);
                if(!ValueWidget.isNullOrEmpty(responseJsonResult)&&RegexUtil.isHTMLWebPage(responseJsonResult)){
                	//弹出框显示HTML
        			CustomDefaultDialog customDefaultDialog=new CustomDefaultDialog(responseJsonResult,"显示HTML",true);
        			customDefaultDialog.setVisible(true);
                }

2,把换行的段落当做字符串拼接

/***
	 * 把换行的段落当做字符串拼接
	 * @param input
	 * @param cr
	 * @param quote
	 * @return
	 */
	public static String splitPlus(String input,String cr,String quote){
		String chinese;
//		String quote="\"";
		String replacement=quote+" +$1"+quote+"$2";
		String regex="[\\s]*([^\\s]+.*)";
		input=input.replace(quote, "\\"+quote);//原字符串转义
		
		if(cr.equals("\\r\\n")){
			chinese=input.replaceAll("(\r\n)"+regex, replacement);
		}else if(cr.equals("\\n")){
			chinese=input.replaceAll("(\n)"+regex, replacement);
		}else if(cr.equals("\\r")){
			chinese=input.replaceAll("(\r)"+regex, replacement);
		}else{
			chinese=input.replaceAll("(\n\r)"+regex, replacement);
		}
		return quote+chinese+quote+";";
	}

 应用:



 

 源代码见附件:

下载地址:http://pan.baidu.com/s/1sjy1ceT

参考:java swing 工具箱:http://hw1287789687.iteye.com/blog/2251439

3,java 模拟linux中sed

/***
	 * __showLog=True -->__showLog=false
	 * @param source
	 * @param regex : 正则表达式
	 * @param replacement
	 * @return
	 */
	public static String sed(String source,String regex,String replacement){
		Pattern p=Pattern.compile(regex,Pattern.MULTILINE);
        Matcher m=p.matcher(source);
        String result = m.replaceAll(replacement);
		return result;
	}
	/***
	 * 模拟linux 的sed 功能
	 * <br>将关闭输出流
	 * @param source
	 * @param regex : 正则表达式
	 * @param replacement
	 * @return
	 */
	public static String sed(File source,String regex,String replacement){
		String input=null;
		try {
			input = FileUtils.getFullContent2(source, SystemHWUtil.CHARSET_UTF);
			input=sed(input, regex, replacement);
			FileUtils.writeStrToFile(source, input, false);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return input;
	}

 应用:

 4,删除每行前面的数字

/***
	 * 删除每行前面的数字
	 * @param input
	 * @return
	 */
	public static String deleteDigit(String input) {
		if(ValueWidget.isNullOrEmpty(input)){
			return null;
		}
		Pattern p = Pattern.compile("^[\\d]+[,:]?[\\s]*",Pattern.MULTILINE);
		Matcher m = p.matcher(input);
		String result = m.replaceAll(SystemHWUtil.EMPTY);
		return result;
	}

 应用:

@Test
	public void test_deleteDigit(){
		String input;
		try {
			input = FileUtils.getFullContent3(new File("e:\\tmp\\testdigit.txt"), SystemHWUtil.CHARSET_CURR).toString();
			System.out.println(RegexUtil.deleteDigit(input));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}

5,模板sed的参数y

/***
	 * 
	 * @param source
	 * @param arrFrom
	 * @param arrTo
	 * @return
	 */
	public static String sedY(String source,String[] arrFrom,String[] arrTo){
		if(ValueWidget.isNullOrEmpty(source)){
			return SystemHWUtil.EMPTY;
		}
		int length=arrFrom.length;
		for(int i=0;i<length;i++){
			String tmp=arrFrom[i];
			if(source.equals(tmp)){
				return arrTo[i];
			}
		}
//		return SystemHWUtil.EMPTY;
		throw new RuntimeException("can not find");
	}

 应用:

@Test
	public void test_sedY(){
		String base[]=new String[]{"a","bc","c","d"};
		String result=RegexUtil.sedY("a", base, new String[]{"1a","2b","3c","4d"});
		System.out.println(result);
	}

 6,获取请求头中的 cookie

/***
     *  regex 中必须包含小括号
     * @param source
     * @param regex
     * @return
     */
    public static String sed(String source, String regex) {
        Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
        Matcher m = p.matcher(source);
        if (m.find()) {
            return m.group(1);
        }
        return null;
    }

String cookieLine = RegexUtil.sed(requestHeaderAndServletPath, "(Cookie:[^:]+)");

7,篡改请求头中的 Host

    /***
     * 篡改请求头中的Host
     * @param string
     * @param domain
     * @return
     */
    public static String replaceHost(String string, String domain) {
        string = string.replaceAll("(Host:[\\s]*)[a-zA-Z\\.-]+", "$1" + domain);//blog.yhskyc.com
        string = string.replaceAll("(Host:[\\s]*)[\\d\\.]+:[\\d]+", "$1" + domain);//127.0.0.1:8080
        return string;
    }

注意:[.]+ 不能匹配任意字符,应该是.+

猜你喜欢

转载自hw1287789687.iteye.com/blog/2254199