比如说查询是否同时含有a,b,c,d四个字母,但它们的顺序是任意的,只要同时含有即可,这样的能用正则写出来吗?
解决方案 »
- POI的HSSFCell cell读取值的问题 excl
- 在Java中用SQL语句删除access数据库的记录,为什么用access打开时记录还在?在线等!
- applet的一个问题!请指教
- Linux下web应用中频繁刷新页面产生的问题
- 新手上路,请指条明路
- 请大家帮忙看看
- 可以在JBuilder7的一个.jpx文件中做多个Application吗?
- 急!!!!!help!怎么也看不懂这段代码怎么执行??
- 迫于无奈,请大家帮忙阿!
- int code = conn.getResponseCode(); 程序貌似卡这里了,怎么解决??谢谢
- JTree节点名字修改?
- java swing 能做视频方面的开发吗?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入待测试的字符串:");
String str = input.next();
if(str.indexOf('a') != -1 && str.indexOf('b') != -1 &&
str.indexOf('c') != -1 && str.indexOf('d') != -1) {
System.out.println("字符串" + str + ",同时含有a、b、c、d");
} else {
System.out.println("字符串" + str + ",不同时含有a、b、c、d");
}
}
}这样就好了,用正则感觉很困难!
挺困难
暂时 可以 匹配4次 abcd 分别匹配呢?
要有 a 至少一次, 并且 要有 b 至少一次, 并且 要有 c 至少一次, 并且 要有 d 至少一次
所以,应该可以写成
a+ && b+ && c+ && d+
可惜正则表达式不支持 &&
所以,原本打算写成
if (string.match(".*a+.*&&.*b+.*&&.*c+.*&&.*d+.*"))
只好写成
if (string.match(".*a+.*")&&string.match(".*b+.*")&&string.match(".*c+.*")&&string.match(".*d+.*"))
了
.*[a-d]+.*[a-d]+.*[a-d]+.*[a-d]+haha 不知道行不行
如下
(.*a.*b.*c.*d.*)|(.*a.*b.*d.*c.*)|(.*a.*c.*b.*d.*)|(.*a.*c.*d.*b.*)|(.*a.*d.*b.*c.*)|(.*a.*d.*c.*b.*)|(.*b.*a.*c.*d.*)|(.*b.*a.*d.*c.*)|(.*b.*c.*a.*d.*)|(.*b.*c.*d.*a.*)|(.*b.*d.*a.*c.*)|(.*b.*d.*c.*a.*)|(.*c.*a.*b.*d.*)|(.*c.*a.*d.*b.*)|(.*c.*b.*a.*d.*)|(.*c.*b.*d.*a.*)|(.*c.*d.*a.*b.*)|(.*c.*d.*b.*a.*)|(.*d.*a.*b.*c.*)|(.*d.*a.*c.*b.*)|(.*d.*b.*a.*c.*)|(.*d.*b.*c.*a.*)|(.*d.*c.*a.*b.*)|(.*d.*c.*b.*a.*)