现在的位置: 首页 > 综合 > 正文

java正则表达式处理类

2013年10月05日 ⁄ 综合 ⁄ 共 3335字 ⁄ 字号 评论关闭
package com.metarnet.Execution.util;
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * String正则表达式匹配
 * 闫帆
 */
public class StringUtil {
/**
* 函数名:strToInt 作 用:把字符串转为整型 参 数:s: 字符串型 返回值:整型
**/
public static int strToInt(String s) {
int i = 0;
try {
i = Integer.parseInt(s);
} catch (NumberFormatException illl) {
i = 0;
}
return i;
}

/**
* 函数名:strToInt 作 用:把字符串转为整型 参 数:s: 字符串型 参 数:itt: 整型 返回值:整型 如果返回值为‘0’则返回
* itt;
**/
public static int strToInt(String s, int itt) {
int i = strToInt(s);
if (i == 0)
i = itt;
return i;
}

public static  String encode(String result, String code) {
String res = null;
try {
res = new String(result.getBytes(), code);
} catch (UnsupportedEncodingException ex) {
System.out.println("charset:" + ex.getMessage());
res = result;
}
return res;
}

/**
* 正则表达式匹配,返回匹配成功的次数
* 
* @param str
*            原字符串
* @param regEx
*            正则表达式
* @return 返回匹配成功的次数
*/
public static int findReturnCount(String str, String regEx) {
int count = 0;
Pattern p = Pattern.compile(regEx);
Matcher matcher = p.matcher(str);
while (matcher.find()) {
count++;
}
return count;
}

/**
* 正则表达式匹配,只要匹配成功一次,则返回true
* 
* @param str
*            原字符串
* @param regEx
*            正则表达式
* @return 只要匹配成功一次,则返回true
*/
public static boolean findReturn(String str, String regEx) {
boolean flag = false;
String[] regExs = regEx.split("\\|");
for (String regExStr : regExs) {
Pattern p = Pattern.compile(regExStr);
Matcher matcher = p.matcher(str);
if (matcher.find()) {
flag = true;
return flag;
}
}
return false;
}

/**
* 正则表达式分割字符串
* 
* @param str
*            原字符串
* @param regEx
*            正则表达式
* @param child
*            子匹配,0匹配整个表达式,1匹配第一个括号内的表达式...
* @return 返回分割后的字符串数组
*/
public static String[] splitStr(String str, String regEx, int child) {
Pattern p = Pattern.compile(regEx);
String formatStr = "";
Matcher matcher = p.matcher(str);
while (matcher.find()) {
formatStr += matcher.group(child) + "`";
}
if (formatStr.equals("")) {
return str.split("\\`");
}
return formatStr.split("\\`");
}

/**
* 正则表达式分割字符串
* 
* @param str
*            原字符串
* @param regEx
*            正则表达式
* @param child
*            子匹配,0匹配整个表达式,1匹配第一个括号内的表达式...
* @param column
*            分割后字符串数组的长度
* @return 返回分割后字符串数组的长度等于column的行的字符串数组
*/
public static String[] splitStr(String str, String regEx, int column,
int child) {
Pattern p = Pattern.compile(regEx);
String formatStr = "";
Matcher matcher = p.matcher(str);
while (matcher.find()) {
formatStr += matcher.group(child) + "`";
}
if (formatStr.equals("")) {
return str.split("\\`");
}
return formatStr.split("\\`");
}
}




例:判断一个字符串是否是以END结尾(结尾可存在特殊字符,不能存在字母数字和汉字)

        String returnString="asd fsadf   " +
"asdfasdfasd  fasdfa" +
"sdf  asdsdc" +
"asdfa  sdfa" +
"dfasd   fcsd" +
"casd  ascsdfEND";
String parse="([\\s\\S]*?)END\\W*$";
System.out.println(StringUtil.findReturn(returnString, parse));

判断一个字符串是否是以END开头和结尾(开头结尾可存在特殊字符,不能存在字母数字和汉字)
public static void main(String[] args) {
String returnString="<ENDasd fsadf   " +
"asdfasdfasd  fasdfa" +
"sdf  asdsdc" +
"asdfa  sdfa" +
"dfasd   fcsd" +
"casd  ascsdfEND>";
String parse="^\\W*END([\\s\\S]*?)END\\W*$";
System.out.println(StringUtil.findReturn(returnString, parse));
}

判断一个字符串是否是以END开头和结尾(开头不能存在任何字符,结尾可存在特殊字符,不能存在字母数字和汉字)
public static void main(String[] args) {
String returnString="ENDasd fsadf   " +
"asdfasdfasd  fasdfa" +
"sdf  asdsdc" +
"asdfa  sdfa" +
"dfasd   fcsd" +
"casd  ascsdfEND";
String parse="^END([\\s\\S]*?)END\\W*$";
System.out.println(StringUtil.findReturn(returnString, parse));
}


判断一个字符串是否是以END开头和结尾(开头和结尾都不能存在任意字符)
public static void main(String[] args) {
String returnString="ENDasd fsadf   " +
"asdfasdfasd  fasdfa" +
"sdf  asdsdc" +
"asdfa  sdfa" +
"dfasd   fcsd" +
"casd  ascsdfEND";
String parse="^END([\\s\\S]*?)END$";
System.out.println(StringUtil.findReturn(returnString, parse));
}

-----------------------------------程序员 闫帆原创---------------------------------------

转载请注明原创人信息  程序员 闫帆yanfanvip

抱歉!评论已关闭.