正则表达式匹配文件内容,并打印匹配的行号
来源:互联网 发布:淘宝盗图被投诉怎么办 编辑:程序博客网 时间:2024/06/05 15:14
今天写了一个正则表达式,这个正则表达式用来匹配相应的文件内容,并打印出匹配内容在文件中的行号。
本文所列举的代码是匹配jsp文件中的pageEncoding的正则表达式,pageEncoding的内容位于以 "<%@ page" 开头, 以”%>“结尾的模块中,并且其中可以有其他内容及换行等, 如下所示:
<%@ page ... pageEncoding="windows-31j" %>
代码如下:
package com.regular.test;import java.io.FileInputStream;import java.io.InputStream;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegularTest { public static void main(String[] args) throws Exception { test(); } public static void test() throws Exception{ Pattern p, ln; Matcher m; String reg = "(?s)(.*?<%@[^>]*?page[^>]*?pageEncoding[^>=]*=[^>\"]*)(\"([^\"]*)\"[^>]*?%>)"; p = Pattern.compile(reg); ln = Pattern.compile("\r\n?"); m = p.matcher(getContent()); int i = 1; while (m.find()) { i += getLnCount(m.group(1), ln); System.out.println( "line : " + i + ", content: " + m.group(3).trim()); i += getLnCount(m.group(2), ln); } } public static int getLnCount(String str, Pattern ln) { if(str==null) { return 0; } int i=0; Matcher m = ln.matcher(str); while(m.find()) { i++; } return i; } public static String getContent() throws Exception { InputStream in = new FileInputStream("aaa.jsp"); byte[] aa = new byte[in.available()]; in.read(aa); return new String(aa); }}
要匹配的文件如下文件如下:
sdf <%@ page language="java" contentType="text/html; charset=windows-31j" %> <%@ pageEncoding= "windows-31j" %> <%@page pageEncoding=" gbk " %> <%@page pageEncoding="utf-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-31j"><title>Insert title here</title></head><body></body></html>
- 正则表达式匹配文件内容,并打印匹配的行号
- 正则表达式应用:匹配一个匹配内容外的内容
- 正则表达式 匹配换行 的内容
- TextBox的内容匹配正则表达式
- python 正则表达式:匹配字符串开头并打印
- 正则表达式匹配HTML内容
- 匹配的正则表达式
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式的匹配
- 正则表达式匹配ini文件
- C# - 正则表达式:匹配引号里面的内容
- qt 中使用正则表达式去除匹配到的内容
- 验证输入内容是否匹配设定的正则表达式
- 匹配form表单中所有内容的正则表达式
- 正则表达式匹配form表单中所有内容的例子
- java如何用正则表达式获取匹配的内容
- 敏捷开发中的Code Review
- HTML5的进步与优势
- android,ExpandableList,将被选中的group置于顶端
- POJ1002 487-3249
- nyoj 367 Reward
- 正则表达式匹配文件内容,并打印匹配的行号
- shellcode检测——libemu原理分析
- 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪
- HDU/HDOJ 1024 The Max Sum Plus Plus
- Java的小项目 秒表
- qtp右键怎么实现啊
- BAPI_ASSET_RETIREMENT_POST 固定资产报废 BAPI
- linux 启动参数 实现
- 同步ALV数据