当前位置: 代码迷 >> J2SE >> 送分题.已经有答案的.正则表达式解决办法
  详细解决方案

送分题.已经有答案的.正则表达式解决办法

热度:50   发布时间:2016-04-23 19:40:01.0
送分题.已经有答案的.正则表达式
要求如下:
字符串中必须包含 "中国",但是不能包含"北京"

test:
1. 国庆节中国北京天安门看升国旗 Invalid (包含"中国",但包含"北京")
2. 国庆节中国天安门看升国旗 Valid (包含"中国",不包含"北京")
3. 国庆节中国天安门北区看升国旗 Valid(包含"中国",不包含"北京")
------解决思路----------------------
Pattern.compile("^(?=.*?(中国))(?!.*?北京).*$")
------解决思路----------------------
import java.util.regex.*;

public class Cs
{
public static void main(String[] args)
{
String s="1. 国庆节中国北京天安门看升国旗\n2. 国庆节中国天安门看升国旗\n3. 国庆节中国天安门北区看升国旗";
String p1="(?m)(?=.*中国)(?!.*北京).*";
Pattern p=Pattern.compile(p1);
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group());
}
}
}
运行结果:

2. 国庆节中国天安门看升国旗
3. 国庆节中国天安门北区看升国旗

请按 ENTER 或其它命令继续
  相关解决方案