java匹配
⑴ java正則表達式 如何全局匹配
樓上有個說的很對,用while(m.find())。。。。。
具體就是:
while(m.find())
{
// 處理
String string = m.group();
}
// while中的find,是進行一次搜索,發現後即找到aab,進行循環體中處理,,然後再從上次找的的地方繼續向後find。。。。。。。。。直到結束
⑵ java中怎麼匹配字元串
------解決方案-------------------------------------------------------- 還是沒太懂你的意思、String 有一個contains 方法、 ------解決方案-------------------------------------------------------- 用正則表達式唄,例如 Java code public class Test { public static void main(String[] args) { String line = 投資費用_股票交易費用 ; Pattern pattern = Pattern.compile( 投資費用.*?交易費用 ); Matcher matcher = pattern.matcher(line); System.out.println(matcher.matches()); } } ------解決方案-------------------------------------------------------- String 有一個contains( 你要匹配的字元串 )方法,返回一個boolean 值 或者用indexOf( 你要匹配的字元串 ) 判斷返回值,如果為-1 那就是滅有 ------解決方案-------------------------------------------------------- Java code System.out.println( 投資費用abc 交易費用 .matches( 投資費用.*交易費用 )); ------解決方案-------------------------------------------------------- 用正則表達式嘛!
⑶ 請問java字元串處理的正則表達式中,要怎麼匹配//...和/*...*/(也就是匹配java注釋) 謝謝!
下面是關於java的正則處理原理和上面的基本一樣,我覺得如果真的匹配java代碼裡面的注釋這個還不夠還需要很多的條件因為有可能你的代碼裡面本身就有相關字元的處理.所以我認為需要根據你具體的情景進行正則設計
Patternp=Pattern.compile("//.*");
str="//0000";
m =p.matcher(str);
System.out.println(m.matches());
p=Pattern.compile("/\\*.*\\*/");
str="/*999*/";
m =p.matcher(str);
System.out.println(m.matches());
⑷ Java正則表達式 匹配 片語
String regex = "(好看|企業|企業家)";
可以匹配含有"好看"或"企業"或"企業家"的字元串
⑸ java 如何查找匹配的字元和字元串
你可以自己寫個方法的!
從返回的第一個位置開始substring,同時記住位置。
public int[] getOffset(String str,String s){
int[] arr=new int[str.length];
int j=1;
while(str.indexOf(s)!=-1){
int i=str.indexOf(s);
if(j==1){
arr[j-1]=i;
}else{
arr[j-1]=i+arr[j-2]+1;
}
String st=str.substring(i+1);
System.out.println(st);
str=st;
j++;
System.out.println("j="+j);
}
return arr;
}
public static void main(String[] args) {
String str="abcaabbddab";
StringText st=new StringText();
int[] i=st.getOffset(str, "ab");
for(int j:i){
System.out.println(j);
}
}
⑹ java 通配符匹配字元串
第一步實現含?而不含*的 字元串匹配,如對dd?的匹配
第二步,實現含有* 的字元串的匹配,如abc* dd?,主要思路是用* split 字元串,分為兩個有效的串,abc, dd?
然後使用步驟一種的方法來查看匹配到的index.
/**
* 找出含?的字元串
* @return
*/
public int checkSubPattern(String src,int begin,String pat){
boolean isFound=true;
if(src.length()-begin < pat.length()){return -1;}
for(int i=begin;i<src.length()-pat.length()+1;i++){
for(int j=0;j<pat.length();j++){
if(pat.charAt(j)!='?' && src.charAt(i+j)!=pat.charAt(j)){
isFound =false;
break;
}
isFound = true;
}
if(isFound){return i;}
}
return -1;
}
public boolean checkStar(String src,String pat){
String[] sub_p = pat.split("\\*");
int begin =0;
for(int i=0;i< sub_p.length;i++){
begin = checkSubPattern(src,begin,sub_p[i]);
System.out.println(begin);
if(begin==-1){return false;}
if(i==0 && pat.charAt(i)!='*' &&begin!=0){return false;}
if((i==sub_p.length-1) && pat.charAt(i)!='*'
&&begin!=(src.length()-
sub_p[i].length())){return false;}
}
return true;
}
⑺ java正則表達式匹配
java里的正則表達式默認只匹配一行
若要支持匹配換行符,在建Pattern時使用兩個參數的那個方法,加上參數Pattern.DOTALL
Pattern p = Pattern.compile("\\d+.{1,2}\\d{2}:\\d{2};\\d{2},\\d{3}",Pattern.DOTALL);
⑻ 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>,告訴我,我把匹配寫得再詳細點
⑼ java 正則匹配
沒太明白你要匹配啥 <[n]>xxxxxxx</[n]> 你是要匹配<[n]> </[n]>之間的內容?
⑽ 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