java正则表达式应用

package com.itztc.demo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {

public static void main(String[] args) {

String string = "fsdfsdfdf<tr>" 
    + "<td align='center' class='orang'>07098</td>" 
    + "<td width='35' align='center' class='yellow'>3</td>" 
    + "<td width='26' align='center' class='yellow'>7</td>" 
    + "</tr>fsdfsdf";  
          
String regEx = "<td(\\s*\\w*\\=*\\'*\\w*\\'*\\s*)*>\\d*";

//Pattern 正则表达式的编译表示形式。
//public static Pattern compile(String regex) 将给定的正则表达式编译到模式中.参数:regex - 要编译的表达式
//public static Pattern compile(String regex,int flags) 将给定的正则表达式编译到具有给定标志的模式中。
//参数:
//regex - 要编译的表达式
//flags - 匹配标志,可能包括 CASE_INSENSITIVE、MULTILINE、DOTALL、UNICODE_CASE、 CANON_EQ、UNIX_LINES、LITERAL 和 COMMENTS 的位掩码

/*CASE_INSENSITIVE:启用不区分大小写的匹配。

MULTILINE:启用多行模式。 在多行模式中,表达式 ^ 和 $ 仅分别在行结束符前后匹配,或者在输入序列的结尾处匹配。默认情况下,这些表达式仅在整个输入序列的开头和结尾处匹配。通过嵌入式标志表达式 (?m) 也可以启用多行模式

DOTALL:启用 dotall 模式。在 dotall 模式中,表达式 . 可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。通过嵌入式标志表达式 (?s) 也可以启用 dotall 模式(s 是 "single-line" 模式的助记符,在 Perl 中也使用它)。

UNICODE_CASE:启用 Unicode 感知的大小写折叠。 指定此标志后,由 CASE_INSENSITIVE 标志启用时,不区分大小写的匹配将以符合 Unicode Standard 的方式完成。默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。通过嵌入式标志表达式 (?u) 也可以启用 Unicode 感知的大小写折叠。指定此标志可能对性能产生影响。

CANON_EQ:启用规范等价。指定此标志后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配。例如,当指定此标志时,表达式 "a\u030A" 将与字符串 "\u00E5" 匹配。默认情况下,匹配不考虑采用规范等价。 不存在可以启用规范等价的嵌入式标志字符。 指定此标志可能对性能产生影响。

UNIX_LINES:启用 Unix 行模式。在此模式中,.、^ 和 $ 的行为中仅识别 '\n' 行结束符。通过嵌入式标志表达式 (?d) 也可以启用 Unix 行模式。

LITERAL:启用模式的字面值解析。指定此标志后,指定模式的输入字符串就会作为字面值字符序列来对待。输入序列中的元字符或转义序列不具有任何特殊意义。标志 CASE_INSENSITIVE 和 UNICODE_CASE 在与此标志一起使用时将对匹配产生影响。其他标志都变得多余了。不存在可以启用字面值解析的嵌入式标志字符。

COMMENTS:模式中允许空白和注释.此模式将忽略空白和在结束行之前以 # 开头的嵌入式注释。 通过嵌入式标志表达式  (?x) 也可以启用注释模式。*/


Pattern p = Pattern.compile(regEx, Pattern.DOTALL); 

/*典型的调用顺序是

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。*/

//public Matcher matcher(CharSequence input)创建匹配给定输入与此模式的匹配器。
Matcher m = p.matcher(string); // string为页面的HTML代码  
/*matches 方法尝试将整个输入序列与该模式匹配。
lookingAt 尝试将输入序列从头开始与该模式匹配。
find 方法扫描输入序列以查找与该模式匹配的下一个子序列*/

while (m.find()) {  
   // System.out.println(Pattern.matches(regEx, string));
    System.out.println(m.group(0).matches(regEx));



 
String all  = "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w]{1,6}$";    
boolean tf = Pattern.matches(all,"你好");
System.out.println(tf);


}



   


}

你可能感兴趣的:(java,正则表达式,unix,perl,嵌入式)