正则表达式的问题 我需要一个正则表达式,满足以下需求:1。字符串以"Types/"开头2。但不以"Types/help/"开头。该怎么写?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用(?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 测试程序:mport java.util.regex.*;public class test5 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str="Types/sadsadsaasdas"; String regEx="^Types/(?!help/)"; //表示a或f Pattern p=Pattern.compile(regEx); Matcher m=p.matcher(str); boolean rs=m.find(); System.out.println(rs); str="Types/help/sadsadsaasdas"; m=p.matcher(str); rs=m.find(); System.out.println(rs); }} 谢谢,不过这个方法不行,例如:"Types/help2/aaa"就匹配了,这是不对的。 这个用String的方法也很好解决啊(str.startWith("Type/") && !str.startWith("Types/help/")) 你的条件就是字符串以"Types/"开头,但不以"Types/help/"开头Types/help2/aaa不是以Types/help/开头的,如果你是要所有Types/help开头的都不匹配,简单地修改String regEx="^Types/(?!help)"; 就可以了 :"Types/help2/aaa"不是以Types/help/开头的啊楼主究竟需要排除哪些啊?是Types/help 还是 Types/help/这两个明显不同啊 楼主的需求讲得很清楚了,但是String regEx="^Types/(?!help)"; 楼主的需求讲得很清楚了,但是String regEx="^Types/(?!help)";不行 对不起,我没有讲清楚。keiy的方法之所以不行是因为"Types/2help/aaa"也匹配了,而我只想让"Types/help/"不匹配,也就是说:"Types/2help/aaa"和"Types/help2/aaa"和"Types/abcd/aaa"都匹配。 String regEx="^Types/(?!help)";是对的"Types/2help/aaa"匹配了,这不是你的要求吗?只让"Types/help/"不匹配,不矛盾阿.搂主逻辑混乱 struts2真的比struts1好很多吗 有JAVA小游戏的程序代码吗? 紧急求助,100分 有哪位大哥告诉小妹怎么在同一页面重复使用滑动门效果? 把我看下这段关于 窗体的代码 编译不成功 不知道那里出错了 LinkedList, Array, Vector的区别? 有哪位给我提供一下有关,补码,反码,移位有关内容! java swing中标签和按钮排列问题 在网上发布java applet 问一个timer的问题 请问java中如何对比时间啊?我想取数出某一天的值; 帮帮我吧,搞了很久也不知是怎么回事儿,身边又没个人教我,自学真的好辛苦!
测试程序:
mport java.util.regex.*;public class test5 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="Types/sadsadsaasdas";
String regEx="^Types/(?!help/)"; //表示a或f
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
boolean rs=m.find();
System.out.println(rs);
str="Types/help/sadsadsaasdas";
m=p.matcher(str);
rs=m.find();
System.out.println(rs);
}}
(str.startWith("Type/") && !str.startWith("Types/help/"))
字符串以"Types/"开头,但不以"Types/help/"开头
Types/help2/aaa不是以Types/help/开头的,如果你是要所有Types/help开头的都不匹配,简单地修改String regEx="^Types/(?!help)";
就可以了
楼主究竟需要排除哪些啊?
是Types/help 还是 Types/help/这两个明显不同啊
keiy的方法之所以不行是因为"Types/2help/aaa"也匹配了,而我只想让"Types/help/"不匹配,也就是说:"Types/2help/aaa"和"Types/help2/aaa"和"Types/abcd/aaa"都匹配。
是对的
"Types/2help/aaa"匹配了,这不是你的要求吗?只让"Types/help/"不匹配,不矛盾阿.
搂主逻辑混乱