當前位置:首頁 » 編程語言 » java字元串正則

java字元串正則

發布時間: 2022-11-28 15:37:59

java正則表達式獲取特定的字元串

^ 和 $ 他們是分別用來匹配字元串的開始和結束,以下分別舉例說明:

"^The": 開頭一定要有"The"字元串;

"of despair$": 結尾一定要有"of despair" 的字元串;

那麼,

"^abc$": 就是要求以abc開頭和以abc結尾的字元串,實際上是只有abc匹配。

"notice": 匹配包含notice的字元串。

你可以看見如果你沒有用我們提到的兩個字元(最後一個例子),就是說 模式(正則表達式) 可以出現在被檢驗字元串的任何地方,你沒有把他鎖定到兩邊。

接著,說說 '*', '+',和 '?',

他們用來表示一個字元可以出現的次數或者順序. 他們分別表示:

"zero or more"相當於{0,},
"one or more"相當於{1,},
"zero or one."相當於{0,1}, 這里是一些例子:
"ab*": 和ab{0,}同義,匹配以a開頭,後面可以接0個或者N個b組成的字元串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同義,同上條一樣,但最少要有一個b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同義,可以沒有或者只有一個b;
"a?b+$": 匹配以一個或者0個a再加上一個以上的b結尾的字元串.
要點, '*', '+',和 '?'只管它前面那個字元.

你也可以在大括弧裡面限制字元出現的個數,比如

"ab{2}": 要求a後面一定要跟兩個b(一個也不能少)("abb");
"ab{2,}": 要求a後面一定要有兩個或者兩個以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a後面可以有2-5個b("abbb", "abbbb", or "abbbbb").
現在我們把一定幾個字元放到小括弧里,比如:

"a(bc)*": 匹配 a 後面跟0個或者一個"bc";
"a(bc){1,5}": 一個到5個 "bc."
還有一個字元 '│', 相當於OR 操作:

"hi│hello": 匹配含有"hi" 或者 "hello" 的 字元串;

"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字元串;

"(a│b)*c": 匹配含有這樣多個(包括0個)a或b,後面跟一個c的字元串;

一個點('.')可以代表所有的單一字元,不包括"\n"

如果,要匹配包括"\n"在內的所有單個字元,怎麼辦?

對了,用'[\n.]'這種模式.

"a.[0-9]": 一個a加一個字元再加一個0到9的數字

"^.{3}$": 三個任意字元結尾 .

中括弧括住的內容只匹配一個單一的字元

"[ab]": 匹配單個的 a 或者 b ( 和 "a│b" 一樣);

"[a-d]": 匹配'a' 到'd'的單個字元 (和"a│b│c│d" 還有 "[abcd]"效果一樣); 一般我們都用[a-zA-Z]來指定字元為一個大小寫英文

"^[a-zA-Z]": 匹配以大小寫字母開頭的字元串

"[0-9]%": 匹配含有 形如 x% 的字元串

",[a-zA-Z0-9]$": 匹配以逗號再加一個數字或字母結尾的字元串

你也可以把你不想要得字元列在中括弧里,你只需要在總括弧裡面使用'^' 作為開頭 "%[^a-zA-Z]%" 匹配含有兩個百分號裡面有一個非字母的字元串.

要點:^用在中括弧開頭的時候,就表示排除括弧里的字元。為了PHP能夠解釋,你必須在這些字元面前後加'',並且將一些字元轉義.

⑵ java 怎麼利用正則表達式從給定的字元串中取出匹配規則字元串

java正則提取需要用到Matcher類,下面給出案例示例供參考


需要提取車牌號中最後一個數字,比如說:蘇A7865提取5,蘇A876X提取6

importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest{
publicstaticvoidmain(String[]args){
Strings="A876X";
//把要匹配的字元串寫成正則表達式,然後要提取的字元使用括弧括起來
//在這里,我們要提取最後一個數字,正則規則就是「一個數字加上大於等於0個非數字再加上結束符」
Patternpattern=Pattern.compile("(\d)[^\d]*$");
Matchermatcher=pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}


關於Matcher 中的幾個方法說明:

Mathcer.start()

Matcher.end()

Matcher.group()


當使用matches(),lookingAt(),find()執行匹配操作後,就可以利用以上三個方法得到更詳細的信息.
start()返回匹配到的子字元串在字元串中的索引位置.
end()返回匹配到的子字元串的最後一個字元在字元串中的索引位置.
group()返回匹配到的子字元串

示例代碼如下,具體功能請參考注釋

Patternp=Pattern.compile(「d+」);
Matcherm=p.matcher(「aaa2223bb」);
m.find();//匹配2223
m.start();//返回3
m.end();//返回7,返回的是2223後的索引號
m.group();//返回2223
Mathcerm2=p.matcher(「2223bb」);
m2.lookingAt();//匹配2223
m2.start();//返回0,由於lookingAt()只能匹配前面的字元串,所以當使用lookingAt()匹配時,start()方法總是返回0
m2.end();//返回4
m2.group();//返回2223
Matcherm3=p.matcher(「2223」);//如果Matcherm3=p.matcher(「2223bb」);那麼下面的方法出錯,因為不匹配返回false
m3.matches();//匹配整個字元串
m3.start();//返回0
m3.end();//返回3,原因相信大家也清楚了,因為matches()需要匹配所有字元串
m3.group();//返回2223


另外,Mathcer類中start(),end(),group()均有一個重載方法它們是start(int i),end(int i),group(int i)專用於分組操作,Mathcer類還有一個groupCount()用於返回有多少組.

示例如下:

Patternp=Pattern.compile(「([a-z]+)(d+)」);
Matcherm=p.matcher(「aaa2223bb」);
m.find();//匹配aaa2223
m.groupCount();//返回2,因為有2組
m.start(1);//返回0返回第一組匹配到的子字元串在字元串中的索引號
m.start(2);//返回3
m.end(1);//返回3返回第一組匹配到的子字元串的最後一個字元在字元串中的索引位置.
m.end(2);//返回7
m.group(1);//返回aaa,返回第一組匹配到的子字元串
m.group(2);//返回2223,返回第二組匹配到的子字元串


注意: 只有當匹配操作成功,才可以使用start(),end(),group()三個方法,否則會拋出java.lang.IllegalStateException,也就是當matches(),lookingAt(),find()其中任意一個方法返回true時,才可以使用。

⑶ java 正則表達式是什麼

不同情況下的正則表達式:

  • 匹配首尾空格的正則表達式:(^s*)|(s*$)。

  • 匹配html標簽的正則表達式:<(.*)>(.*)</(.*)>|<(.*)/>。

  • 配空行的正則表達式: [s| ]* 。

  • 整數或者小數:^[0-9]+.{0,1}[0-9]{0,2}$。

  • 只能輸入數字:"^[0-9]*$"。

  • 只能輸入n位的數字:"^d{n}$"。

  • 只能輸入至少n位的數字:"^d{n,}$"。

  • 只能輸入m~n位的數字:。"^d{m,n}$"

  • 只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。

  • 只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。

  • 只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。

  • 只能輸入非零的正整數:"^+?[1-9][0-9]*$"。

  • 只能輸入非零的負整數:"^-[1-9][]0-9"*$。

  • 只能輸入長度為3的字元:"^.{3}$"。

  • 只能輸入由26個英文字母組成的字元串:"^[A-Za-z]+$"。

  • 只能輸入由26個大寫英文字母組成的字元串:"^[A-Z]+$"。

  • 只能輸入由26個小寫英文字母組成的字元串:"^[a-z]+$"。

  • 只能輸入由數字和26個英文字母組成的字元串:"^[A-Za-z0-9]+$"。

  • 只能輸入由數字、26個英文字母或者下劃線組成的字元串:"^w+$"。

  • 驗證用戶密碼:"^[a-zA-Z]w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字元、數字和下劃線。

  • 驗證是否含有^%&',;=?$"等字元:"[^%&',;=?$x22]+"。

  • 只能輸入漢字:"^[u4e00-u9fa5]{0,}$"。

  • 驗證Email地址:"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"。

  • 驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。

  • 驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。

  • 匹配中文字元的正則表達式: [u4e00-u9fa5]。

  • 匹配雙位元組字元(包括漢字在內):[^x00-xff]。

  • 應用:計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)String.prototype.len=function(){returnthis.replace(/[^x00-xff]/g,"aa").length;}。

⑷ java正則表達式是什麼

java正則表達式是計算機科學的一個概念。正則表達式使用單個字元串來描述、匹配一系列符合某個句法規則的字元串。

在編寫處理字元串的程序或網頁時,經常會有查找符合某些復雜規則的字元串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。

很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這里,*會被解釋成任意的字元串。

和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當然,代價就是更復雜——比如你可以編寫一個正則表達式,用來查找所有以0開頭,後面跟著2-3個數字,然後是一個連字型大小「-」,最後是7或8位數字的字元串(像010-12345678或0376-7654321)。

正則表達式的基本操作:

正則表達式定義:符合一定規則的表達式。

作用:用於專門操作字元串。

特點:用於一些特定的符號來表示一些代碼操作。這樣就簡化書寫。所以學習正則表達式,就是在學習一些特殊符號的使用。

好處:可以簡化對字元串的復雜操作。

弊端:符號定義越多,正則越長,閱讀性越差。

⑸ 用java正則表達式檢測字元串中是否含有某字元

用java正則表達式檢測字元串中含有某字元方法:

publicclassTest{

publicstaticvoidmain(String[]args){
Stringstr="HelloWorld";//待判斷的字元串
Stringreg=".*ll.*";//判斷字元串中是否含有ll
System.out.println(str.matches(reg));
}

}

⑹ java 如何判斷一個字元串符合正則表達式語法

按照你的要求給出的Java正則表達式的例子如下
//下面這個正則表達式匹配不能以.css,.html,.js,.json或者.xml結尾的字元串
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CC {
public static void main(String[] args) {
String s="xxxx.js.jss";//目標字元串
String regex="((?!\\.((css)|(html)|(js)|(json)|(xml))$).)+";//正則表達式
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
if(m.matches()){
System.out.println("匹配");
}else{
System.out.println("不匹配");
}
}
}

⑺ java正則表達式是什麼

在程序開發中,難免會遇到需要匹配、查找、替換、判斷字元串的情況發生,而這些情況有時又比較復雜,如果用純編碼方式解決,往往會浪費程序員的時間及精力。因此,學習及使用正則表達式,便成了解決這一矛盾的主要手段。

正則表達式是一種可以用於模式匹配和替換的規范,一個正則表達式就是由普通的字元(例如字元a到z)以及特殊字元(元字元)組成的文字模式,它 用以描述在查找文字主體時待匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。

(7)java字元串正則擴展閱讀:

正則表達式的特點是:

1、靈活性、邏輯性和功能性非常強;

2、可以迅速地用極簡單的方式達到字元串的復雜控制。

3、對於剛接觸的人來說,比較晦澀難懂。

由於正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表達式來處理文本內容。

⑻ Java中什麼是正則表達式

正則表達式 就是將一個類型的數據 按照一定方式 寫成正則表達式的形式 這樣可以辨別數據是否符合這一類型的數據 比如我們的身份證號碼 就是有一定的規則的 這樣我們寫一個 正則表達式 和別人輸入的身份證號碼 比對 如果符合這個正則表達式的規則 就是身份證號碼

⑼ java正則表達式截取字元串

importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

publicclassHello{
publicstaticvoidmain(String[]args){
Stringre="\[([^\]]+)\]";
Stringstr="[您好],abcdefg,[abc]";

Patternp=Pattern.compile(re);
Matcherm=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
}
}

將m.group(1)組建成你自己想要的格式就好了

⑽ 用java正則表達式檢測字元串中是否含有某字元

如果只需要判斷是否包含某字元,可以使用String自帶的方法:
方法1:
contains("指定字元");
//如果包含,返回true,反之返回false
方法2:index("指定字元");
//如果包含,則返回第一次出現該字元的索引位置,即,如果返回值>0,則可認為包含。
至於是否一定要使用正則還要看你的需求,可否再說的詳細些?

熱點內容
魅族微信多開安卓怎麼弄 發布:2025-01-18 10:04:33 瀏覽:448
網路設置里沒有伺服器是什麼 發布:2025-01-18 09:52:19 瀏覽:343
阿里雲esc伺服器系統 發布:2025-01-18 09:49:16 瀏覽:790
你們家的無線網密碼是多少 發布:2025-01-18 09:47:50 瀏覽:730
renderscriptandroid 發布:2025-01-18 09:32:18 瀏覽:993
安卓手機如何拍游戲素材 發布:2025-01-18 09:30:59 瀏覽:348
廣州日立壓縮機有限公司 發布:2025-01-18 09:15:08 瀏覽:624
伺服器兩條寬頻如何疊加網速 發布:2025-01-18 08:52:17 瀏覽:731
oracle存儲過程集合 發布:2025-01-18 08:42:39 瀏覽:885
洋蔥數學緩存 發布:2025-01-18 08:38:36 瀏覽:919