使用java中的正则表达式,如何设置条件,即if-then-else?显然,我想在条件中添加条件if "http" exist, "www" CAN exist
或if "http" doesnot exist "www" HAVE TO exist
。如何使用正则表达式实现该条件?
我做了什么
((http){0,1}|(www){0,1})
但这不起作用
示例输入:
如果字符串以" http"开头在它之后," www"可以来。
ex: " httpwww< sometext>" --->应匹配
ex: " http< sometext>" --->应匹配
如果字符串没有以" http"开头,字符串必须以" www"
开头ex: " www< sometext>" --->应匹配
ex: "< sometext>" ---->不应该与正则表达式相匹配,因为它不是以http和www开头的
答案 0 :(得分:1)
使用简单的正则表达式匹配:
boolean matches = myString.matches("^(?:http|www).*");
// The .* is for Java implementation
这是regex demo!
答案 1 :(得分:1)
一个简单的解决方案是使用注释中指定的“环顾四周”。
如果我正在使用实际的网址,您也可以使用实际的URL
对象来执行此操作。
例如:
String[] input = { "http://www.google.com", "http://foo.com", "www.foo.com" };
Pattern p = Pattern.compile("(?<=http).*(?=www)");
for (String s : input) {
Matcher m = p.matcher(s);
System.out.printf("Found in %s? %b%n", s, m.find());
try {
URL u = new URL(s);
System.out.printf("Authority starts with www and protocol is http for %s? %b%n", s,
u.getAuthority().startsWith("www") && u.getProtocol().equals("http"));
}
catch (MalformedURLException mue) {
System.out.printf("%s is not interpreted as well-formed URL.%n", s);
}
}
<强>输出强>
Found in http://www.google.com? true
Authority starts with www and protocol is http for http://www.google.com? true
Found in http://foo.com? false
Authority starts with www and protocol is http for http://foo.com? false
Found in www.foo.com? false
www.foo.com is not interpreted as well-formed URL.
答案 2 :(得分:1)
实际上,您的String 应以http
或www
开头。
如果http后面跟着www,你就不在乎了。所有你关心的是你的字符串总是以* http8或 www 开头,而不是别的。
所以,
public static void main(String[] args) {
String s1 = "http://www.google.com";
String s2 = "www.google.com";
String s3 = "sdfwww.google.com";
System.out.println(s1.matches("^(http|www).*"));
System.out.println(s2.matches("^(http|www).*"));
System.out.println(s3.matches("^(http|www).*"));
}
O / P ::
true
true
false
答案 3 :(得分:0)
试试这个演示,
http://regex101.com/r/dW7jJ0/3
正则表达式
^(httpwww|http|www)