java is alphabetic_JDK之Pattern类探索(一)
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
testDOTALL();
}
public static void testDOTALL() {
String str =
"aaa\nbbb";
String
pattern = ".+";
//
DOTALL
//點匹配全部內容,包括系統換行符
print(str,
pattern, Pattern.DOTALL,
"DOTALL");
// NOT
DOTALL:set flag not is Pattern.DOTALL
//點匹配不全部內容的情況,也就是說系統換行符不會被匹配
print(str,
pattern, Pattern.CASE_INSENSITIVE, "NOT DOT
ALL");
//
UNIX_LINES
//以
\n為行分隔符,這里aaa\n的匹配結果是兩行aaa和bbb
print(str,
pattern, Pattern.UNIX_LINES,
"UNIX_LINES");
str =
"aaa\r\nbbb";
//如果指定此模式,window下的行分隔符’\r’也被當作常規字符處理。
print(str,
pattern, Pattern.UNIX_LINES, "UNIX_LINES IN
WINDOWS");
//
COMMENTS
str =
"aaba\r\naab ab\r\nbbb";
pattern =
"aa.+#comment";
//注釋模式是從#到末尾都是注釋,該正則表達式只編譯#之前的字符串作為pattern.
print(str,
pattern, Pattern.COMMENTS,
"COMMENT");// whitespace is
ignored.
//
MULTILINE
pattern =
".+b$";
//多行模式^、$分別表示匹配行首和行尾。
print(str,
pattern, Pattern.MULTILINE,
"NULTILINE");
//
LITERAL
pattern =
"bb";
//將正則表達式中常用的字符視為單個字符處理,比如點(.)在此模式中只匹配點字符,不匹配除點之外的其他字符。
print(str,
pattern, Pattern.LITERAL,
"LITERAL");
// .+is
literal and not as regex pattern
pattern =
".+bb";
print(str,
pattern, Pattern.LITERAL,
"LITERAL");
//如果Unicode的編碼和字符的Ascoll碼值是一樣的,則進行匹配,如A和\u0041
print("AA","\u0041",Pattern.CANON_EQ,"CANON_EQ");
//unicode的匹配中區分大小寫
print("aa","\u0041",Pattern.UNICODE_CASE,"UNICODE_CASE");
//unicode的匹配中不區分大小寫
print("aa","\u0041",Pattern.UNICODE_CASE|Pattern.CASE_INSENSITIVE,"UNICODE_CASE|CASE_INSENSITIVE");
//只有jdk1.7+才支持,在正則中使用UNICODE_CHARACTOR_CLASS進行匹配,詳細信息見文章末尾的列表。
print("aaAB","\\p{Lower}",Pattern.UNICODE_CHARACTER_CLASS,"UNICODE_CHARACTER_CLASS");
print("aaAB","\\p{Upper}",Pattern.UNICODE_CHARACTER_CLASS,"UNICODE_CHARACTER_CLASS");
}
public static void print(String str, String
pattern, int mode, String modeName) {
Pattern p =
Pattern.compile(pattern, mode);
Matcher m =
p.matcher(str);
System.out.println("set pattern
mode:" +
modeName+"
PATTERN:"+pattern);
int i =
0;
while
(m.find()) {
i++;
System.out.println("group(" +
String.valueOf(i) + "):" +
m.group(0));
}
}
}
總結
以上是生活随笔為你收集整理的java is alphabetic_JDK之Pattern类探索(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flume可以实时监控mysql嘛_fl
- 下一篇: java native code_原生代