A. java中正則表達式如何使用比如判斷一個字元串是否滿足某種格式,給個詳細點的例子
按照你的要求給出的Java正則表達式的例子如下
//下面這個正則表達式匹配不能以.css,.html,.js,.json或者回.xml結尾的字元串答
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassCC{
publicstaticvoidmain(String[]args){
Strings="xxxx.js.jss";//目標字元串
Stringregex="((?!\.((css)|(html)|(js)|(json)|(xml))$).)+";//正則表達式
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
if(m.matches()){
System.out.println("匹配");
}else{
System.out.println("不匹配");
}
}
}
運行結果
匹配
B. java.util.regex中的pattern 和 matcher的用法
Pattern和Matcher Pattern 一個Pattern是一個正則表達式經編譯後的表現模式。 Matcher 一個Matcher對象是一個狀態機器,它依據Pattern對象做為匹配模式對字元串展開匹配檢查。 首先一個Pattern實例訂制了一個所用語法與PERL的類似的正則表達式經編譯後的模式,然後一個Matcher實例在這個給定的Pattern實例的模式控制下進行字元串的匹配工作。用法如下:
(字元串:"abc",正則表達式:"[a-z]{3}")
String類的方法:
booleanb="abc".matches("[a-z]{3}"
System.out.println(b);
Pattern類中的方法:
booleanb=Pattern.matches("[a-z]{3}","abc");
System.out.println(b);
Matcher類中的方法:
Patternp=Pattern.compile("[a-z]{3}");
Matcherm=p.matcher("acc");
booleanb=m.matches()
System.out.println(b);
得到的結果都為true。
C. java 正則表達式用法
先回答樓主的正則表達式吧
一個是建表語句格式如下 :
create【空格若干】table 【表名和其他信息】
正則表達式如下:create\s+table\s+.+
第二個是建索引語句格式如下 :
create【空格和字母若干】index【空格和字母下劃線等若干】
正則表達式如下:create[\sA-Za-z]+index[\sA-Za-z_]+
不過我認為樓主給定的限制不夠細,像【空格和字母下劃線等若干】這樣的說法比較模糊,上面的正則表達式可以正常匹配正確的語句,但是對於錯誤語句的限制不夠,還有進一步修改的餘地。
在JAVA中使用正則表達式時,應該import下面兩個類
import java.util.regex.Matcher;
import java.util.regex.Pattern;
另外"\"應該被替換成"\\"。
具體方法是:
String sql="create table test(id varchar(10) not null)"
String reg="create\\s+table\\s+.+";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(sql);
boolean b = m.matches();
得到的布爾值表示sql是否匹配正則表達式reg。
D. Java中怎麼簡單的使用正則表達式
一個正則表達式就是由普通字元(例如大小寫字母)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
在最簡單的情況下,一個正則表達式看上去就是一個普通的查找串。例如,正則表達式"java"中沒有包含任何元字元,它可以匹配"java"和"javascript"等字元串,但是不能匹配"Java"。
正則表達式不僅能進行字元串的匹配,還能進行字元串的提取、替換。
示例代碼:
String regEx = ".+/(.+)$";
String str = "D:/java/test.txt";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
if (!m.find()){
System.out.println("文件路徑格式錯誤!");
return;
}
System.out.println(m.group(1));
運行結果:test.txt
正則表達式「.+/(.+)$」的含義就是:被匹配的字元串以任意字元序列開始,後邊緊跟著字元「/」,最後以任意字元序列結尾,「()」代表分組操作,這里就是把文件名做為分組,匹配完畢就可以通過Matcher 類的group方法取到所定義的分組了。需要注意的這里的分組的索引值是從1開始的,所以取第一個分組的方法是m.group(1)而不是m.group(0)。
E. 一個java小問題,Pattern類中的類方法(靜態方法)compile(String regex
編譯標志
效果
Pattern.CANON_EQ 當且僅當兩個字元的"正規分解(canonical decomposition)"都完全相同的情況下,才認定匹配。比如用了這個標志之後,表達式"a/u030A"會匹配"?"。默認情況下,不考慮"規范相等性(canonical equivalence)"。
Pattern.CASE_INSENSITIVE
(?i) 默認情況下,大小寫不明感的匹配只適用於US-ASCII字元集。這個標志能讓表達式忽略大小寫進行匹配。要想對Unicode字元進行大小不明感的匹配,只要將UNICODE_CASE與這個標志合起來就行了。
Pattern.COMMENTS
(?x) 在這種模式下,匹配時會忽略(正則表達式里的)空格字元(註:不是指表達式里的"//s",而是指表達式里的空格,tab,回車之類)。注釋從#開始,一直到這行結束。可以通過嵌入式的標志來啟用Unix行模式。
Pattern.DOTALL
(?s) 在這種模式下,表達式'.'可以匹配任意字元,包括表示一行的結束符。默認情況下,表達式'.'不匹配行的結束符。
Pattern.MULTILINE
(?m) 在這種模式下,'^'和'$'分別匹配一行的開始和結束。此外,'^'仍然匹配字元串的開始,'$'也匹配字元串的結束。默認情況下,這兩個表達式僅僅匹配字元串的開始和結束。
Pattern.UNICODE_CASE
(?u) 在這個模式下,如果你還啟用了CASE_INSENSITIVE標志,那麼它會對Unicode字元進行大小寫不明感的匹配。默認情況下,大小寫不明感的匹配只適用於US-ASCII字元集。
Pattern.UNIX_LINES
(?d) 在這個模式下,只有'/n'才被認作一行的中止,並且與'.','^',以及'$'進行匹配。
F. java正則表達式怎麼書寫
正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
下面介紹具體的方法。
G. java pattern 如何匹配用逗號分隔的很復雜的表達式
按照你的要求匹配aa:bb,cc,dd:e簡化的Java正則表達式: (:?\w+,?)+
我給你個Java程序的例子,你可以參考回一下.
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassA{
publicstaticvoidmain(String[]args){
Strings="aa:bb,cc,dd:e";
Stringregex="(:?\w+,?)+";
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
if(m.matches()){
System.out.println(m.group());
}
}
}
運行結果答:
aa:bb,cc,dd:e
H. 想利用java里pattern功能處理對多個關鍵字的匹配查詢
Pattern pattern = Pattern.compile("切");
Matcher matcher = pattern.matcher(txt);
Matcher matcher2 = Pattern.compile("蒸").matcher(txt);
Matcher matcher3 = Pattern.compile("煮").matcher(txt);
Matcher matcher4 = Pattern.compile("燉").matcher(txt);
Matcher matcher5 = Pattern.compile("炸").matcher(txt);
boolean a = false;
boolean b = false;
boolean c = false;
boolean d = false;
boolean e = false;
while ((a = matcher.find())|| (b = matcher2.find())||(c = matcher3.find())||( d = matcher4.find())||(e = matcher5.find())) {
String msg ="";
if(a){
msg = ":" + matcher.group() + ":";
}else if(b){
msg = ":" + matcher2.group() + ":";
}else if(c){
msg = ":" + matcher3.group() + ":";
}else if(d){
msg = ":" + matcher4.group() + ":";
}else if(e){
msg = ":" + matcher5.group() + ":";
}
System.out.println(msg);
}
只不過這樣比較麻煩,你可以自己精煉下,我想知道,你提取關鍵字是不是只是想確定是否包含,如果是你可以不用這個方法