正则表达式
如何可能达到以下的效果:String 的match方法:"abc"匹配"abcde" 返回匹配成功
"abc"匹配"abc"返回匹配失败就是如果数据不是abc就返回true"abc"匹配[正则表达式]--->这个正则怎么写?表达的不清楚……大概就这么个意思了
如何可能达到以下的效果:String 的match方法:"abc"匹配"abcde" 返回匹配成功
"abc"匹配"abc"返回匹配失败就是如果数据不是abc就返回true"abc"匹配[正则表达式]--->这个正则怎么写?表达的不清楚……大概就这么个意思了
正则表达式怎么写,可以match方法对于所有 不equals("abc")的串都返回true
调用这个方法时候用非逻辑运算符:!
比如String s1="abc";
String s2="abccd";
String s3="abcmn";
System.out.println(!s1.matches ("abc"));//打印false
System.out.println(!s2.matches ("abc"));//打印true
System.out.println(!s3.matches ("abc"));//打印true
public static void main(String rags[]){
String[] arr = {"abc","abcx","xabc","axbc",""};
for(int i=0;i<arr.length;i++){
if(arr[i].matches("|.*?[^(abc)].*?")){
System.out.println("true");
}else{
System.out.println("false");
}
}
}
"|.*?[^(abc)].*|.*?abc.+|.+?abc.*"
//期望更好的答案,但是,正则的效率是个问题啊
也就是说13楼得那个仍然不行//楼主,这是你逼我的
String[] arr = { "abc", "abcx", "xabc", "axbc", "", "abcabc" };
for (int i = 0; i < arr.length; i++) {
if (arr[i].matches(".{0,2}|.{4,}|[^a][^b][^c]|[^a][^b]c|[^a]b[^c]|[^a]bc|a[^b][^c]|a[^b]c|ab[^c]")) {
System.out.println("true");
} else {
System.out.println("false");
}
}
/*
任意字符0-2个 true
任意字符4-∞个 true
剩下的三个字符abc a 表示1 ^a 表示0
剩下的也无非就是000,001,010,011,100,101,110返回true 111代表abc 返回false
或了这么多次的表达式,效率什么的就完全不用考虑了。
坑爹的需求啊,好好的!"XXX".matches("abc")不用,非得用这恶心的玩自己。楼主你赢了,要不是今天闲的蛋疼。
*/
这个就可以了
String[] arr = {"abc","abcx","xabc","axbc","abcabc","aaa","def"};
for(int i=0;i<arr.length;i++){
if(arr[i].matches("|[^a]+|.*?a(?!bc).*|.*?abc.+|.+?abc.*")){
/*
(1)| :空串
(2)[^a]+ :整个字符串不出现a
(3).*?a(?!bc).*:字符串出现a的时候,后面不能是bc
(4).*?abc.+ :abc后面还有其他字符
(5).+?abc.* :abc前面还有其他字符
*/
System.out.println("true");
}else{
System.out.println("false");
}
}
//不知道现在是不是可以,求验证
String regex="[^[abc]}\\w"
试试
直接可以对一个串进行非操作正则的写法
比如所有!equals "abc"的正则
"abd".match("^(abc)") <----这个肯定不行看来没有这么方便的写法了!结贴,大家辛苦了