当前位置:编程学习 > JAVA >>

正则表达式求助!!!!!急

要求是查找一个文件夹下的某些文件
文件名匹配条件是包含以下内容的
字符串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);
就好了。 --------------------编程问答--------------------
引用 2 楼 fudongrifdr 的回复:
把+改成*吧

不是的,你说的只匹配了后半部分,前面还有字符串1呢
字符串1与_001_之间是任意的字符 --------------------编程问答--------------------
引用 3 楼 AA5279AA 的回复:
楼主的意思感觉应该没表达清楚
要不何苦用正则呢
直接str.contains("_001_" + 字符串2);
就好了。


不是的,你说的只匹配了后半部分,前面还有字符串1呢
字符串1与_001_之间是任意的字符 --------------------编程问答--------------------
引用 1 楼 fudongrifdr 的回复:
	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());
}


觉得你说的挺对的,可是我字符串1和字符串都是变量
要怎么写到compile的“”双引号里面呢 --------------------编程问答-------------------- /^.*_001.*$/
^以什么开头,$以什么结束
.表示除回车以外的任意字符,*任意个

不知道是否满足楼主要求 --------------------编程问答-------------------- 不好意思,应该是/^.*_001_.*$/,看漏了001后面的_ --------------------编程问答--------------------
引用 8 楼 crazypandariy 的回复:
不好意思,应该是/^.*_001_.*$/,看漏了001后面的_

谢谢你的回答
字符串1和2也是里面的条件啊,你这样可以写到compile里面吗 --------------------编程问答-------------------- 抱歉,/^.*_001_.*$/这种写法是在js中。
在java中写为^.*_001_.*$即可。
"hhh_001_hkj".matches("^.*_001_.*$");或者Pattern p = Pattern.compile("^.*_001_.*$"); --------------------编程问答--------------------
引用 10 楼 crazypandariy 的回复:
抱歉,/^.*_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_.+$"); --------------------编程问答--------------------
引用 12 楼 crazypandariy 的回复:
如果你说的字符串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_ 之间必有零个或多个字符
--------------------编程问答--------------------
引用 13 楼 quxt0910841004 的回复:
Quote: 引用 12 楼 crazypandariy 的回复:

如果你说的字符串1和字符串2必须要有,那么就把*改为+就可以了,+表示必须出现1次以上
"hhh_001_hkj".matches("^.+_001_.+$");或者Pattern p = Pattern.compile("^.+_001_.+$");

你这个结果001_后面可以是任意的字符,我的要求是它后面是str2
你的正则里得把str1和str2也考虑进去,他们俩也是条件

^str1.+_001_str2$  匹配str1开头,str1与_001_str2之间必须有字符。 --------------------编程问答--------------------
引用 15 楼 qiyuexuel 的回复:
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(); 
}
--------------------编程问答--------------------
引用 18 楼 qiyuexuel 的回复:
这个还真是先测试了,才贴过来的
结果为true 表示匹配成功  

非常感谢 --------------------编程问答-------------------- 达叔说的才是正则啊... --------------------编程问答--------------------
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,