javaの初心者をマスターしたいです.正則は簡単に使えます.
10250 ワード
java野菜の鳥、指導を歓迎します.
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
文字マッチング文法:\d マッチング数字(0~9)「\d」マッチング8、不一致12;D 非数字\\D'マッチングcとマッチし、3に一致しません.\w 任意の単文字「\w\w」にマッチして、A 3に一致しない@3;\W 単一文字ではない「\W」にマッチする@は、cにマッチしません.\s 空白文字の「\d\s\d」にマッチして3 dとなり、abcにマッチしません.\S 非空の文字にマッチしています.\\S\S'はA〓4とマッチしています.3 dにはマッチしていません. 任意の文字「...」にマッチして、A$5にマッチします.改行にはマッチしません.[...]かっこ内の任意の文字[b-d]にマッチするb、c、dは、eにマッチしません.[^...]非括弧文字[^b-z]にマッチするaは、b-zの文字と一致しません.重複マッチング文法:{n}n回マッチ\d\d\d\d\d、不整合\dまたは\d\d\d\d\d{n、}マッチングn回とn回以上\w{2}マッチング\w\w以上、不一致\w{n、m}マッチングn回前m回一致\s{1,3}マッチング、s\s、\s、\s、一致しません.0または1回5にマッチしますか5または0にマッチしていません.非5と0+が1回または複数の\S+にマッチしています.複数の\S*が0回以上の\W*と0回以上一致していません.
特殊文字:
特殊文字とは、上に述べた「*.txt」の中の*のような特殊な意味を持つ文字のことで、簡単にはどの文字列も意味します.ファイル名に*の文がある場合を検索します.
件については、*を転送し、その前に\を追加する必要があります.ls\*.txt.正規表現には以下の特殊文字があります.
特別文字は、入力文字列の最後の位置にマッチします.RegExpオブジェクトのMultiiline属性が設定されている場合は、$も'または'\r'に一致します.$文字自体にマッチするには\$を使ってください.()サブ表現の開始位置と終了位置を指定します.サブ表現は後で使用するために取得できます.これらの文字にマッチするには\(\)を使ってください.前のサブ表現を0回以上一致させます.文字に合わせるには、\*.+.前のサブ表現にマッチします.一回または複数回.+文字にマッチするには、\+を使ってください.改行以外の任意の1文字にマッチします.マッチングするには、\を使用してください.[中かっこ表式の開始をマークします.マッチするには、\[?前のサブ表現にマッチする0回または1回、または非貪欲な定義子を指定します.マッチングするために?文字を使用してください.]次の文字を、または特殊な文字、または元の義文字、または後方参照、または8進変換記号としてマークします.たとえば、'n'一致文字'n'.'整合改行記号.シーケンス''''
「\」にマッチします.'('は「(」にマッチします.^は、入力文字列の開始位置にマッチします.括弧式で使用しない限り、文字セットは受け付けられないと表しています.^文字自体にマッチするには\^.{マーク限定子式の開始を使用してください.マッチするには\{.|は2つの項目の間の選択を指定してください.マッチするには、|を使用してください.
正規表現を作成する方法と数学式を作成する方法は同じです.つまり、複数の要素文字を使ってオペレータと小さな表現を結合して、より大きな表現を作成します.正規表現です.
式のコンポーネントは、単一の文字、文字セット、文字範囲、文字間の選択またはこれらすべてのコンポーネントの任意の組み合わせとすることができる.
コード
説明
..
改行以外の任意の文字にマッチします.
\w
アルファベットまたは数字またはアンダースコアまたは漢字にマッチします.
\s
任意の空白文字にマッチします.
\d
数値にマッチする
\b
単語の開始または終了にマッチします.
^
マッチした文字列の開始
$
マッチした文字列の最後
表式(?!experssion)は、負のゼロ幅の断言またはゼロ幅の負の予測としても知られています.これは、自分の位置の後ろに文字列experssionが一致していないと断言しています.以下の正規表現は、まず長さ3の単語文字列にマッチします.この文字列の後は数字文字列ではいけません.
//b/w{3}(?!/d+) (76)
表式
(?ゼロ幅とも言われ、負の回顧では、自分の位置の前に文字列が一致しないと断言されています.
experssion
を選択します.次の正規表現は数値で始まる文字列にマッチしません.この文字列は大文字または小文字または下線しか含まれません.
(?正規表現には、表式の基本的な内容以外にもコメントが含まれています.ここでは、コメントは一般的に表式(?コメント)で行われます.以下の正規表現は、最初のグループに「数字では開始できません」と注釈を付けています.
(?注意:正規表現にコメントを含めるには、パターン内の空白文字を無視するIgnorePattern Whitespaceオプションを有効にします.したがって、コメントにスペース、改行記号、タブ記号などを追加することができます.このオプションを有効にすると、文字の後ろの内容はすべて無視されます.
正規表現(?(?< # このグループの表現にマッチしないと断言します. (79)
//d+ # 長さが少なくとも1の数字文字列
) # 式の終了
[a-z A-Z]+ # 大文字または小文字または下線の長さは少なくとも1の文字列しか含まれません.
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
文字マッチング文法:\d マッチング数字(0~9)「\d」マッチング8、不一致12;D 非数字\\D'マッチングcとマッチし、3に一致しません.\w 任意の単文字「\w\w」にマッチして、A 3に一致しない@3;\W 単一文字ではない「\W」にマッチする@は、cにマッチしません.\s 空白文字の「\d\s\d」にマッチして3 dとなり、abcにマッチしません.\S 非空の文字にマッチしています.\\S\S'はA〓4とマッチしています.3 dにはマッチしていません. 任意の文字「...」にマッチして、A$5にマッチします.改行にはマッチしません.[...]かっこ内の任意の文字[b-d]にマッチするb、c、dは、eにマッチしません.[^...]非括弧文字[^b-z]にマッチするaは、b-zの文字と一致しません.重複マッチング文法:{n}n回マッチ\d\d\d\d\d、不整合\dまたは\d\d\d\d\d{n、}マッチングn回とn回以上\w{2}マッチング\w\w以上、不一致\w{n、m}マッチングn回前m回一致\s{1,3}マッチング、s\s、\s、\s、一致しません.0または1回5にマッチしますか5または0にマッチしていません.非5と0+が1回または複数の\S+にマッチしています.複数の\S*が0回以上の\W*と0回以上一致していません.
特殊文字:
特殊文字とは、上に述べた「*.txt」の中の*のような特殊な意味を持つ文字のことで、簡単にはどの文字列も意味します.ファイル名に*の文がある場合を検索します.
件については、*を転送し、その前に\を追加する必要があります.ls\*.txt.正規表現には以下の特殊文字があります.
特別文字は、入力文字列の最後の位置にマッチします.RegExpオブジェクトのMultiiline属性が設定されている場合は、$も'または'\r'に一致します.$文字自体にマッチするには\$を使ってください.()サブ表現の開始位置と終了位置を指定します.サブ表現は後で使用するために取得できます.これらの文字にマッチするには\(\)を使ってください.前のサブ表現を0回以上一致させます.文字に合わせるには、\*.+.前のサブ表現にマッチします.一回または複数回.+文字にマッチするには、\+を使ってください.改行以外の任意の1文字にマッチします.マッチングするには、\を使用してください.[中かっこ表式の開始をマークします.マッチするには、\[?前のサブ表現にマッチする0回または1回、または非貪欲な定義子を指定します.マッチングするために?文字を使用してください.]次の文字を、または特殊な文字、または元の義文字、または後方参照、または8進変換記号としてマークします.たとえば、'n'一致文字'n'.'整合改行記号.シーケンス''''
「\」にマッチします.'('は「(」にマッチします.^は、入力文字列の開始位置にマッチします.括弧式で使用しない限り、文字セットは受け付けられないと表しています.^文字自体にマッチするには\^.{マーク限定子式の開始を使用してください.マッチするには\{.|は2つの項目の間の選択を指定してください.マッチするには、|を使用してください.
正規表現を作成する方法と数学式を作成する方法は同じです.つまり、複数の要素文字を使ってオペレータと小さな表現を結合して、より大きな表現を作成します.正規表現です.
式のコンポーネントは、単一の文字、文字セット、文字範囲、文字間の選択またはこれらすべてのコンポーネントの任意の組み合わせとすることができる.
コード
説明
..
改行以外の任意の文字にマッチします.
\w
アルファベットまたは数字またはアンダースコアまたは漢字にマッチします.
\s
任意の空白文字にマッチします.
\d
数値にマッチする
\b
単語の開始または終了にマッチします.
^
マッチした文字列の開始
$
マッチした文字列の最後
表式(?!experssion)は、負のゼロ幅の断言またはゼロ幅の負の予測としても知られています.これは、自分の位置の後ろに文字列experssionが一致していないと断言しています.以下の正規表現は、まず長さ3の単語文字列にマッチします.この文字列の後は数字文字列ではいけません.
//b/w{3}(?!/d+) (76)
表式
(?ゼロ幅とも言われ、負の回顧では、自分の位置の前に文字列が一致しないと断言されています.
experssion
を選択します.次の正規表現は数値で始まる文字列にマッチしません.この文字列は大文字または小文字または下線しか含まれません.
(?正規表現には、表式の基本的な内容以外にもコメントが含まれています.ここでは、コメントは一般的に表式(?コメント)で行われます.以下の正規表現は、最初のグループに「数字では開始できません」と注釈を付けています.
(?注意:正規表現にコメントを含めるには、パターン内の空白文字を無視するIgnorePattern Whitespaceオプションを有効にします.したがって、コメントにスペース、改行記号、タブ記号などを追加することができます.このオプションを有効にすると、文字の後ろの内容はすべて無視されます.
正規表現(?(?< # このグループの表現にマッチしないと断言します. (79)
//d+ # 長さが少なくとも1の数字文字列
) # 式の終了
[a-z A-Z]+ # 大文字または小文字または下線の長さは少なくとも1の文字列しか含まれません.
package com.ebworx.main;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class TestPattern {
private static Logger logger = Logger.getLogger(TestPattern.class);
private static boolean temp;
private static boolean temp_second;
private static String regex="";
private static String regex_first="java";
private static String[] regex_second={"moon","mone","mnne","mooe"};
private static String[] regex_third={"wab","wbb","wcb","wdb"};
private static String[] regex_four={"bead","band","bccd","bzzd"};
private static String[] regex_five={"1","10","1000","1000+"};
private static String[] regex_six={"a1","bvv10","cf1000","dd1000+"};
private static String regex_seven="work,future;love life";
private static String regex_eight="2013 1 16 ";
private static String regex_nine="10 100 1000RMB";
private static String regex_ten="<name>wangbiao</name><age>22</age>";
private static String[] regex_eleven={"google","gooogle","goooogle"};
private static String[] regex_twelve={"AB","ab","Ab","aB"};
private static String regex_thirteen="10 100 1000RMB";
private static String regex_fourteen="10 100 1000RMB";
public static void print(String[] str){
for (String string : str) {
logger.debug(string+"-");
}
}
public static void print(String str,boolean temp){
if(temp){
logger.debug(str+"match Successfully");
}else{
logger.debug(str+"match Unsuccessfully");
}
}
public static void test_first(){
temp=Pattern.matches(regex_first, "java");
temp_second=Pattern.matches(regex_first, "android");
logger.debug("java resutl is "+temp);
logger.debug("android result is "+temp_second);
}
public static void test_second(){
for (String str : regex_second) {
regex="m(o+)e";
temp=Pattern.matches(regex, str);
print(str,temp);
}
}
public static void test_third(){
for (String str :regex_third ) {
regex="w[abcdef]b";
String regex_another="w[a-f]b";
temp=Pattern.matches(regex, str);
temp_second=Pattern.matches(regex_another, str);
print(str,temp);
print(str,temp_second);
}
}
public static void test_four(){
for (String str :regex_four ) {
regex="b(ea|an|cc)d";
temp=Pattern.matches(regex, str);
print(str,temp);
}
}
public static void test_five(){
for (String str :regex_five ) {
regex="\\d+";
temp=Pattern.matches(regex, str);
print(str,temp);
}
}
public static void test_six(){
for (String str :regex_six ) {
regex="\\w+\\d+";
temp=Pattern.matches(regex, str);
print(str,temp);
}
}
//String split() Pattern split()
public static void test_seven(){
regex="[,\\s;]";
String[] strArray=regex_seven.split(regex);
print(strArray);
}
public static void test_eight(){
regex="[ ]";
Pattern p=Pattern.compile(regex);
String[] strArray=p.split(regex_eight);
print(strArray);
}
public static void test_nine(){
regex="(\\d+)( | |RMB)";
String str=regex_nine.replaceAll(regex, "1000$2");
logger.debug(str);
}
//xml
public static void test_ten(){
regex="<(\\w+)>(\\w+)(</\\1>)";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(regex_ten);
while(m.find()){
logger.debug("00000000000000000000----message is "+m.group(2));
}
}
public static void test_eleven(){
//
regex="g(o{2,5})gle";
for (String str : regex_eleven) {
temp=Pattern.matches(regex, str);
print(str,temp);
}
}
public static void test_twelve(){
regex="ab";
Pattern p=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
for (String str : regex_twelve) {
Matcher m=p.matcher(str);
//logger.fatal(">>>>>>>>>>>>>>"+m.find());
if(m.find()){
logger.debug("---------"+str+"match Successfully"+regex+"--------");
}
}
}
public static void test_thirteen(){
regex="[,\\s;]";
String[] strArray=regex_seven.split(regex);
print(strArray);
}
public static void test_fourteen(){
regex="[,\\s;]";
String[] strArray=regex_seven.split(regex);
print(strArray);
}
public static void test_fifteen(){
String str="wangbiao work in wangbiao software company which is located in wangbiao street";
String reg="wangbiao";
Matcher matcher=Pattern.compile(reg).matcher(str);
StringBuffer sb=new StringBuffer();
int i=0;
while(matcher.find()){
i++;
matcher.appendReplacement(sb, "tangxi");
System.out.println(" "+i+" "+sb);
}
matcher.appendTail(sb);
System.out.println(" "+sb);
// 1 tangxi
// 2 tangxi work in tangxi
// 3 tangxi work in tangxi software company which is located in tangxi
// tangxi work in tangxi software company which is located in tangxi street
}
public static void main(String[]args){
test(ufirst)
test(usecond);
testhird();
testufour()
testufive();
test(usix);
test(useven);
testit()
testine();
testen();
テクノセブン();
test(utwelve);
)
)