=F(*F)*(+F(*F)*)* 现在只有F=(i ¦a)
我要匹配i*i*a+a*a*i+a*a*i
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TestOnline {
public static void main(String args[]) {
Pattern p = Pattern.compile("\\b(?<!\\*)(i|a)(\\*\\1)*(\\+\\1\\2*)*\\b");
String s = "i*i*a*i*i*a";
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group()+" "+"start:"+m.start()+"end:"+m.end());
}
}}
//结果:
i*i start:0end:3
a*a start:6end:9
a*a start:12end:15
我想问的是整个单词是否匹配;它怎么找出这样的东西
我要匹配i*i*a+a*a*i+a*a*i
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TestOnline {
public static void main(String args[]) {
Pattern p = Pattern.compile("\\b(?<!\\*)(i|a)(\\*\\1)*(\\+\\1\\2*)*\\b");
String s = "i*i*a*i*i*a";
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group()+" "+"start:"+m.start()+"end:"+m.end());
}
}}
//结果:
i*i start:0end:3
a*a start:6end:9
a*a start:12end:15
我想问的是整个单词是否匹配;它怎么找出这样的东西
\\b(? <!\\*)(i ¦a)(\\*\\1)*(\\+\\1\\2*)*\\b
//这才是正确的
public class DemoClass { /**
* @param args
*/
public static void main(String[] args) {
Pattern p = Pattern.compile("\\b(?<!\\*)(i|a)(\\*\\1)*(\\+\\1\\2*)*\\b");
String s = "i*i*i*i*i+i*i+i*i";
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group()+" "+"start:"+m.start()+"end:"+m.end());
}
}}
现在不用反向引用了;
把 //1 换 (a|i) (a|i)(\\*(a|i))
\\b(?<!\\*)(i|a)(\\*(a|i))*(\\+(a|i)(\\*(a|i))*\\b这样不知道对不对
"\\b(?<!\\*)(i|a)(\\*(a|i))*(\\+(a|i)(\\*(a|i))*)*\\b"
\\这个好象可以
//除去+ *号开头的
如果我要 \\b(? <!(\\* ¦\\+))(i ¦a)(\\*(a ¦i))*(\\+(a ¦i)(\\*(a ¦i))*)*\\b
这个东西取非;
就是要不匹配这个正则表达式的 单词?
该怎么半?
* @param args
*/
public static void main(String[] args) {
Pattern p = Pattern.compile("\\b(?<!\\*)(i|a)(\\*\\1)*(\\+\\1\\2*)*\\b");
String s = "i*i*i*i*i+i*i+i*i";
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group()+" "+"start:"+m.start()+"end:"+m.end());
}
}}
import java.util.regex.Pattern;
public class yige {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\b(? <!\\()a+b+\\b");
String s = "aaa (ab jj2rjo aab 2ii oo8d 7haohsie abb";
Matcher m = p.matcher(s);
while (m.find()) {
p(m.group());
}
}
public static void p(Object o){
System.out.print(o+" ");
} }//答案:aab abb
//我现在要 除了以上2个单词,其他单词都找出来
该怎么办?
//只能做到这里了,因为(不能是单词的组合部分~所以,请高手解答!
Pattern p = Pattern.compile("\\s(?!a+b+)\\S+");
String s = " aaa (ab jj2rjo aab 2ii oo8d 7haohsie abb";
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group().trim());
}
?!不能是这样的a+b+; 对吗? 有些不确定
比如说:正则表达式是[abc] 我只要改成[^abc]就能够找除了abc外的单词了;
表达式没办法取非吗? 咱们通常找符合的,但是我要找不符合的;
整个表达式就没有办法取非吗? 一定要重新写一个吗?
整个表达式取非是没用过~找一本好点的教程看看~你最近做什么?我发现你提的都是EL的问题