java正則匹配
1. 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;}。
2. java正則表達式 如何全局匹配
樓上有個說的很對,用while(m.find())。。。。。
具體就是:
while(m.find())
{
// 處理
String string = m.group();
}
// while中的find,是進行一次搜索,發現後即找到aab,進行循環體中處理,,然後再從上次找的的地方繼續向後find。。。。。。。。。直到結束
3. Java 正則匹配
我來寫正則,已測試:
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest1{
publicstaticvoidmain(String[]args){
Stringptn="(<ahref=[^<]*>)([u4e00-u9fa5]+)(</a>)";//([^<])(/a)
Patternp=Pattern.compile(ptn);
Strings="<ahref=">看</a>啊打發<ahref=ajdfajdk>虹</a>";
Matcherm=p.matcher(s);
while(m.find()){
System.out.println(m.group(0));
}
}
}
如果你網頁數據中還有其它<a href = ....>ad</a>,告訴我,我把匹配寫得再詳細點
4. java正則表達式匹配
java里的正則表達式默認只匹配一行
若要支持匹配換行符,在建Pattern時使用兩個參數的那個方法,加上參數Pattern.DOTALL
Pattern p = Pattern.compile("\\d+.{1,2}\\d{2}:\\d{2};\\d{2},\\d{3}",Pattern.DOTALL);
5. java正則匹配出所有類方法
java正則表達式提取需要用到Matcher類。
正則規則就是「一個數字加上大於等於0個非數字再加上結束符」
Pattern pattern
= Pattern.compile("(\\d)[^\\d]*$")
Matcher matcher
= pattern.matcher(s)
if(matcher.find())
System.out.println
(matcher.group(1)); } }
6. Java匹配正則表達式的實現
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern pp = Pattern.compile("\\(|\\)|/|\\*|\\+|\\-|\\d*\\.\\d*|\\d*");
Matcher mm = pp.matcher("(10.0-54)*45+(32+5.4)/(2+1)");
List<String> values = new ArrayList<String>();
while(mm.find()){
values.add(mm.group());
}
String[] value = new String[values.size()];
values.toArray(value);
for(String str : value){
System.out.println(str);
}
}
}
7. java 正則匹配
沒太明白你要匹配啥 <[n]>xxxxxxx</[n]> 你是要匹配<[n]> </[n]>之間的內容?
8. java正則表達式
你可以使用零寬斷言來實現這個拆分。
比如題目中的要求可以使用正則:(?<!\),
你也可以使用JAVA正則表達式在線測試在線測試java正則表達式。
題目的測試結果如下:
9. java正則匹配
按照你的要求分割字元串的Java程序如下
publicclassDD{
publicstaticvoidmain(String[]args){
Stringstr="asd*dasd**asd*asd";
String[]s=str.split("(\*)+");
for(inti=0;i<s.length;i++){
System.out.println("被分割的字元串下標為"+i+"字元串為"+s[i]);
}
}
}
運行結果
被分割的字元串下標為 0 字元串為 asd
被分割的字元串下標為 1 字元串為 dasd
被分割的字元串下標為 2 字元串為 asd
被分割的字元串下標為 3 字元串為 asd
10. java 正則匹配目錄
Java正則
"第(.*?)章\\s+(.*?)\\s"