我用RegexBuddy来测试正则表达式,感觉可以。RegexBuddy is your perfect companion for working with regular expressions. Easily create regular expressions that match exactly what you want. Clearly understand complex regexes written by others. Quickly test any regex on sample strings and files, preventing mistakes on actual data. Use the regex in your source code with code snippets automatically adjusted to the particulars of your programming language. Collect and document libraries of regular expressions for future reuse. Integrate RegexBuddy with your favorite searching and editing tools for instant access.^_^
String a="naab";
String b="ncdfb";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(a);
Matcher m2=p.matcher(b);
System.out.println(a+": "+m.find());
System.out.println(b+": "+m2.find());
不太清楚你这段代码的含义。
n*b是代表任意多个n再接一个b吗?但是,为什么运行起来都返回true呢?
如果全部使用Java代码实现怎么样?
String patternString =
"学历[::]?(<[^>]*>\\s*)*+[^<]*+";
String regEx = "学历[::]?(<[^>]*>\\s*)*+[^<]*+";
String a = ":</td><td>若干</td><td>学历:</td><td>大专</td></tr><tr><td>工作年限:</";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(a);
m.find();
int start = m.start();
int end = m.end();
System.out.println("match: " + a.substring(start,end));
大家说会输出什么呢?
居然是:
match: 学历:</td><td>
如果在regulator里面测试,会输出:
学历:</td><td>大专
String regEx = "学历[::]?(<[^>]*>\\s*)*+[^<]*+";
String a = ":</td><td>若干</td><td>学历:</td><td>大专</td></tr><tr><td>工作年限:</";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(a);
m.find();
int start = m.start();
int end = m.end();
System.out.println("match: " + a.substring(start,end));
大家说会输出什么呢?
居然是:
match: 学历:</td><td>
如果在regulator里面测试,会输出:
学历:</td><td>大专
在java中和别的语言不同之处在于他的字符串处理方式!你的代码更正如下:
String regEx = "学历[::]?(<[^\\>]*>\\s*)*+[^\\<]*+";
String a = ":</td><td>若干</td><td>学历:</td><td>大专</td></tr><tr><td>工作年限:</";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(a);
m.find();
int start = m.start();
int end = m.end();
System.out.println("match: " + a.substring(start,end));------------------------------------------------------------Result:match: 学历:</td><td>大专
我运行了一下,怎么还是一样啊?
输出还是:
match: 学历:</td><td>
你能够把原理讲一下吗?
看一下这个
http://www.donews.net/wordy/archive/2004/11/01/158558.aspx
我用的是JBuilder X
程序的输出确实是:
match: 学历:</td><td>我想问一下,你的的JDK是什么版本?
还有一个问题想请教:
现在(JDK1.4之后)正则表达式已经是JDK的一部分了,应该不需要再去下载什么Jakarta-ORO库了吧?
非常感谢您的热心帮助。
不过,我的也是JDK1.4啊,实在想不通我们同样的代码执行结果却不一样。
我准备把JDK1.4重新下载一个试试看。真的谢谢你。
同样的程序,同样是JDK1.4,我们两人的执行结果怎么会不一样啊?
我真的想不通。
最后解决问题的办法居然是:
把JDK1.4用JDK1.4.1替代,连JDK1.5(J2SE5.0)都不行。感谢frhwxx(笑对^_^人生)!
感谢 thomas_20!
感谢所有热心的人!
下载了一个RegexBuddy,不太会用!
谢谢你!