正则表达式已经不是陌生的话题了,无论是在Java 中还是在JS中都会用到正则表达式,尤其是在搜索引擎中的数据分析用到的最广泛。
先简单的介绍一些表达式:
1、元字符 | 2、数量 |
. :匹配除换行符以外的任意字符: \w:匹配字母或数字或下划线或汉字 \s :匹配任意的空白符: \d:匹配数字: \b:匹配单词的开始或结束: ^:匹配字符串的开始: $:匹配字符串的结束 | * :重复零次或更多次 + :重复一次或更多次 ? :重复零次或一次 {n} :重复n次 {n,} :重复n次或更多次 {n,m}:重复n到m次 |
查找匹配需要分组用到group: matcher.group(n)
ps : 转义字符 需要注意。
这只是一些简单的字符。可以参考入门链接 http://deerchao.net/tutorials/regex/regex.htm
下面来简单的介绍一下用法:
1、.matches() 匹配: 匹配字符串中含有什么
(1)String.matches( regex );
(2)matcher.matches( regex );
2、.find() 查找:查找想要的东西
一般:
Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( string );
if( matcher.find()){
String result = matcher.group(n);
}
……
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tr2 {
public static void test() {
Pattern pattern;
Pattern pattern1;
Matcher matcher;
String floatStr = "100.22";
String floatStr2 = "100.22222";
System.out.println(floatStr.matches("^\\d+\\.\\d{2}"));
System.out.println(floatStr.matches("^\\d+\\.\\d{2}$"));
System.out.println(floatStr2.matches("^\\d+\\.\\d{2}$"));
pattern = Pattern.compile("^\\d+\\.\\d{2}$");
matcher = pattern.matcher(floatStr);
if (matcher.matches()) {
System.out.println("yes");
} else {
System.out.println("NO");
}
String str = "<li><a href=\"www.baidu.com/category/1\">编程</a></li>";
pattern = Pattern.compile("\"(\\w+)\"");
matcher = pattern.matcher(str);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println(result);
}
pattern1 = Pattern.compile("\"(.*?)\"");
matcher = pattern1.matcher(str);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println(result);
}
}
public static void main(String[] args) {
test();
}
}
简单的暂时是这样了,其实正则表达式很有用处,自己可以进一步拓展……