Java中正则表达式的实现_代码
2008-10-17 17:56
555 查看
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author jiakw
* 正则表达式的使用
*/
public class TestRegex {
/**
* 字符串匹配
* @param expression 正则表达式字符串
* @param text 要进行匹配的字符串
*/
private static void matchingText(String expression, String text) {
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
boolean b = m.matches();
System.out.println(b);
}
/**
* 字符串替换
* @param expression 正则表达式字符串
* @param text 要进行替换操作的字符串
* @param str 要替换的字符串
*/
private static void replaceText(String expression, String text, String str) {
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
String s = m.replaceAll(str);
System.out.println(s);
}
/**
* 字符串查找
* @param expression 正则表达式字符串
* @param text 要进行查找操作的字符串
* @param str 要查找的字符串
*/
private static void findText(String expression, String text, String str) {
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, str);
i++;
}
m.appendTail(sb);
System.out.println(sb.toString());
System.out.println(i);
}
/**
* 字符串分割
* @param expression 正则表达式字符串
* @param text 要进行分割操作的字符串
*/
private static void splitText(String expression, String text) {
Pattern p = Pattern.compile(expression); // 正则表达式
String[] a = p.split(text);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
matchingText("^card_([_0-9a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?.shtml$", "card_1020000000.shtml");
// 字符串匹配,这是不符合的
matchingText("a*b", "baaaaab");
// 字符串匹配,这是符合的
matchingText("a*b", "aaaaab");
// 字符串匹配,通用匹配
matchingText("^([_0-9a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?", "aaaaab");
// 字符串替换
replaceText("ab", "aaaaab", "d");
replaceText("a*b", "aaaaab", "d");
replaceText("a*b", "caaaaab", "d");
// 字符串查找
findText("cat", "one cat two cats in the yard", "dog");
findText("(fds){2,}", "dsa da fdsfds aaafdsafds aaf", "dog");
// 字符串分割
splitText("a+", "caaaaaat");
splitText("a+", "c aa aaaa t");
splitText(" +", "c aa aaaa t");
splitText("//+", "dsafasdfdsafsda+dsagfasdfa+sdafds");
}
}
import java.util.regex.Pattern;
/**
* @author jiakw
* 正则表达式的使用
*/
public class TestRegex {
/**
* 字符串匹配
* @param expression 正则表达式字符串
* @param text 要进行匹配的字符串
*/
private static void matchingText(String expression, String text) {
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
boolean b = m.matches();
System.out.println(b);
}
/**
* 字符串替换
* @param expression 正则表达式字符串
* @param text 要进行替换操作的字符串
* @param str 要替换的字符串
*/
private static void replaceText(String expression, String text, String str) {
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
String s = m.replaceAll(str);
System.out.println(s);
}
/**
* 字符串查找
* @param expression 正则表达式字符串
* @param text 要进行查找操作的字符串
* @param str 要查找的字符串
*/
private static void findText(String expression, String text, String str) {
Pattern p = Pattern.compile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, str);
i++;
}
m.appendTail(sb);
System.out.println(sb.toString());
System.out.println(i);
}
/**
* 字符串分割
* @param expression 正则表达式字符串
* @param text 要进行分割操作的字符串
*/
private static void splitText(String expression, String text) {
Pattern p = Pattern.compile(expression); // 正则表达式
String[] a = p.split(text);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
matchingText("^card_([_0-9a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?.shtml$", "card_1020000000.shtml");
// 字符串匹配,这是不符合的
matchingText("a*b", "baaaaab");
// 字符串匹配,这是符合的
matchingText("a*b", "aaaaab");
// 字符串匹配,通用匹配
matchingText("^([_0-9a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?", "aaaaab");
// 字符串替换
replaceText("ab", "aaaaab", "d");
replaceText("a*b", "aaaaab", "d");
replaceText("a*b", "caaaaab", "d");
// 字符串查找
findText("cat", "one cat two cats in the yard", "dog");
findText("(fds){2,}", "dsa da fdsfds aaafdsafds aaf", "dog");
// 字符串分割
splitText("a+", "caaaaaat");
splitText("a+", "c aa aaaa t");
splitText(" +", "c aa aaaa t");
splitText("//+", "dsafasdfdsafsda+dsagfasdfa+sdafds");
}
}
相关文章推荐
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- 用NFA实现正则表达式匹配(java代码)
- Java二叉树的编程实现(数据结构)和正则表达式代码实现
- 优酷电视剧爬虫代码实现一:下载解析视频网站页面(4)补充: Java正则表达式Matcher.group(int group)相关类解析
- JAVA 实现正则表达式代码
- 剑指Offer 面试题19:正则表达式匹配 Java代码实现
- java中正则表达式提取字符串中日期实现代码
- Java基于正则表达式实现的替换匹配文本功能【经典实例】
- JAVA使用邮箱的正则表达式代码
- java正则表达式语法详解及其使用代码实例
- 利用Java正则表达式去掉SQL代码中回车换行和多余空格
- Java正则表达式之代码实战
- 利用正则表达式获取特定文件(如java class)并对其进行处理(如代码统计)
- java--计算表达式实现程序代码
- Oc 正则表达式~详解 03 (实现代码)
- Java使用正则表达式对注册页面进行验证功能实现
- 用java实现简单的email正则表达式判断
- swift 3.0 正则表达式查找/替换字符的实现代码
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式
- JAVA正则表达式:计算机的实现