正则表达式求助!!!!!急
要求是查找一个文件夹下的某些文件文件名匹配条件是包含以下内容的
字符串1 + “*_001_” + 字符串2
*是代表任意字符的 正则表达式 filefilter matcher listFiles --------------------编程问答--------------------
public static void main(String[] args) {--------------------编程问答-------------------- 把+改成*吧 --------------------编程问答-------------------- 楼主的意思感觉应该没表达清楚
String str = "字符串1asdsadasd_001_字符串2";
Pattern p = Pattern.compile("字符串1.+_001_字符串2");
Matcher m = p.matcher(str);
System.out.println(m.matches());
}
要不何苦用正则呢
直接str.contains("_001_" + 字符串2);
就好了。 --------------------编程问答--------------------
不是的,你说的只匹配了后半部分,前面还有字符串1呢
字符串1与_001_之间是任意的字符 --------------------编程问答--------------------
不是的,你说的只匹配了后半部分,前面还有字符串1呢
字符串1与_001_之间是任意的字符 --------------------编程问答--------------------
觉得你说的挺对的,可是我字符串1和字符串都是变量
要怎么写到compile的“”双引号里面呢 --------------------编程问答-------------------- /^.*_001.*$/
^以什么开头,$以什么结束
.表示除回车以外的任意字符,*任意个
不知道是否满足楼主要求 --------------------编程问答-------------------- 不好意思,应该是/^.*_001_.*$/,看漏了001后面的_ --------------------编程问答--------------------
谢谢你的回答
字符串1和2也是里面的条件啊,你这样可以写到compile里面吗 --------------------编程问答-------------------- 抱歉,/^.*_001_.*$/这种写法是在js中。
在java中写为^.*_001_.*$即可。
"hhh_001_hkj".matches("^.*_001_.*$");或者Pattern p = Pattern.compile("^.*_001_.*$"); --------------------编程问答--------------------
我_001_后面必须跟字符串2,是个变量,从文件里取出来的值
前面还有字符串1,字符串1与_001_之间是任意字符
我可以这么写吗Pattern p = Pattern.compile(str1 + ".*_001_" + str2) --------------------编程问答-------------------- 如果你说的字符串1和字符串2必须要有,那么就把*改为+就可以了,+表示必须出现1次以上
"hhh_001_hkj".matches("^.+_001_.+$");或者Pattern p = Pattern.compile("^.+_001_.+$"); --------------------编程问答--------------------
你这个结果001_后面可以是任意的字符,我的要求是它后面是str2
你的正则里得把str1和str2也考虑进去,他们俩也是条件 --------------------编程问答-------------------- Pattern p = Pattern.compile("^str1.+_001_.+str2$");
就行了 --------------------编程问答--------------------
public static void main(String[] args) {
String str = "字符串1ss_001_字符串2";
String str1="字符串1";
String str2="字符串2";
Pattern p = Pattern.compile(str1+".+_001_"+str2);
Matcher m = p.matcher(str);
System.out.println(m.matches());
}
"+_001" 表示str1 和 _001_ 之间必有一个或多个字符
如果 把+ 换成 * 表示 str1 和 _001_ 之间必有零个或多个字符
--------------------编程问答--------------------
^str1.+_001_str2$ 匹配str1开头,str1与_001_str2之间必须有字符。 --------------------编程问答--------------------
public static void main(String[] args) {
String str = "字符串1ss_001_字符串2";
String str1="字符串1";
String str2="字符串2";
Pattern p = Pattern.compile(str1+".+_001_"+str2);
Matcher m = p.matcher(str);
System.out.println(m.matches());
}
"+_001" 表示str1 和 _001_ 之间必有一个或多个字符
如果 把+ 换成 * 表示 str1 和 _001_ 之间必有零个或多个字符
觉得你说的对,不知道执行起来有没有问题,谢谢 --------------------编程问答-------------------- 这个还真是先测试了,才贴过来的
结果为true 表示匹配成功
--------------------编程问答-------------------- 也可以直接将这段代码封装起来
public static boolean isMatcher(String str1,String str2,String str){--------------------编程问答--------------------
Pattern p = Pattern.compile(str1+".+_001_"+str2);
Matcher m = p.matcher(str);
return m.matches();
}
这个还真是先测试了,才贴过来的
结果为true 表示匹配成功
非常感谢 --------------------编程问答-------------------- 达叔说的才是正则啊... --------------------编程问答--------------------
补充:Java , Java相关