『壹』 請問java高手,如何用String的matches()匹配只有(字母、數字、中文、半形@)的字元串啊感激不盡
packagetestDemo;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;publicclassDemo
{
publicstaticvoidmain(Stringargs[]){//按指定模式在字元串查找
Stringline="1a我@163com";Stringpattern="[a-zA-Z0-9u4E00-u9FA5@]+";
//創建Pattern對象
Patternr=Pattern.compile(pattern);//現在創建matcher對象
Matcherm=r.matcher(line);
if(m.matches()){
System.out.println("inputvlueisOK");
}else{
System.out.println("NOMATCH");
}
}
}
『貳』 java中string.matcher(regex)如何指定匹配模式, 即要實現和js中的/i/m/g等等的功能
應該是想實現不管大小寫的a-z和1-9的組合吧,String regex="[a-zA-Z][0-9]"即可,上面的只能識別兩個字元,如果想要多個字元匹配,那麼加在後面加*表示零次或者多次,加+表示一次或者多次,像上面的情況,1.如果要匹配「adfj123」就用[a-zA-Z]+[0-9]+即可;2.如果字母出現一次,數字出現很多,那麼就用[a-zA-Z]([0-9])+,如「a123」;3.如果字母出現一次,數字出現0次或者多次,就用
[a-zA-Z]([0-9])*即可;4.如果字母出現0次或者多次,數字出現一次就用[a-zA-Z]*([0-9]),這些是最常用的,樓主可以看看api在java.util.regex.pattern
『叄』 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中怎麼匹配字元串
匹配方式(其中每個方式對應RegUtil.java中的一個方法)代碼:
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegUtil {
/**
* 方式一:基本正則表達式實現
* @param str
* @param reg
* @return
*/
public static boolean matchMatcher(String str,String reg){
Pattern pattern =Pattern.compile(reg);
Matcher matcher=pattern.matcher(str);
return matcher.matches();
}
/**
* 方式二:利用Pattern自帶實現
* @param str
* @param reg
* @return
*/
public static boolean matchPattern(String str,String reg){
return Pattern.matches(reg, str);
}
/**
* 方式三:String自帶實現
* @param str
* @param reg
* @return
*/
public static boolean matchStr(String str,String reg){
return str.matches(reg);
}
}
對應單元測試代碼如下:
package test;
import org.junit.Assert;
import org.junit.Test;
public class TestReg {
@Test
public void testParttern(){
Assert.assertTrue(RegUtil.matchMatcher("123", "//d+"));
Assert.assertTrue(RegUtil.matchPattern("123", "//d+"));
Assert.assertTrue(RegUtil.matchStr("123", "//d+"));
}
}
『伍』 Java String正則匹配大小寫問題
有,把正則改成:
str.matches("^(?i)aba.*");
(?i)表示後面的字元串都不區分大小寫
『陸』 java 正則匹配String字元串截取問題。
1、首先,數字格式化:將空格替換為『,』,還是將『,』替換為空格都可以;
2、其次,了解各個數據的特徵:表示顏色的都有『色』,表示包裝的都有『/』,剩下的就是規格
3、最後,截取信息:在字元串中找到特徵字元(『色』、『/』),特徵字元到最近的前一個分隔符和後一個分隔符之間的數據就是想要的數據;
public static void main(String[] args) {
String src = "彩色 10包/箱 12袋/包,11行";
String s1 = src.replaceAll(",", " ");
String[] ss = s1.split(" ");
StringBuffer yanse = new StringBuffer() ;
StringBuffer guige = new StringBuffer() ;
StringBuffer baozhuang = new StringBuffer() ;
for(String s2:ss){
if(s2.indexOf("色")>0){
yanse.append(s2).append(",");
}else if(s2.indexOf("/")>0){
baozhuang.append(s2).append(",");
}else{
guige.append(s2).append(",");
}
}
yanse.deleteCharAt(yanse.length()-1);
guige.deleteCharAt(guige.length()-1);
baozhuang.deleteCharAt(baozhuang.length()-1);
System.out.println("顏色:"+yanse.toString());
System.out.println("包裝:"+baozhuang.toString());
System.out.println("規格:"+guige.toString());
}
『柒』 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中如何對兩個字元串數組進行匹配
導入java.util.regex
String[] array=new String[]{「cbb」,"caa","dsa"};
String regex="^cb*"; //表示以c開頭有多個b的字元串
for(String str:array){
if(Str.matches(regex)) {
System.out.println(str);
}
輸出結果為cbb,因為其他的符合要求,純手打
『玖』 Java字元串匹配
按LS所說的確可以。要是一定要用String的話可以用
String[] s;
for(String ss:s)
if(ss.contains("貿易"))
System.out.println(ss);
這樣的方法。
『拾』 JAVA String.matches的用法
如果僅僅是看a裡面是否存在b,用a.contains(b)這個方法即可。
你用matchs方法當然也可以,但你那麼寫肯定是不行的。用a,matches(b),這個b要求是一個正則表達式,如果你一定要用這種方式判斷,建議你了解一下正則表達式的相關語法,也很簡單。