‘壹’ 请问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要求是一个正则表达式,如果你一定要用这种方式判断,建议你了解一下正则表达式的相关语法,也很简单。