用于特殊URL的Java正则表达式

时间:2014-01-03 18:58:50

标签: java regex

在Java中,我正在尝试编写一个正则表达式来匹配一种特殊的HTTP URL:

http://<any-string-of-1-or-more-chars>/#<any-string-of-0-or-more-chars>

所以字符串有4个段:

  1. 字符串文字:“ http:// ”;然后
  2. 任何1 +字符串;然后
  3. 字符串文字:“ /#”;然后
  4. 0+ char
  5. 的任何字符串

    “传递”字符串的示例:

    等。我最好的尝试是:

    String regex = "http://*/#*";
    

    然而,当我试一试时:

    String test = "http://example.com/#";
    String regex = "http://*/#*";
    if(test.matches(regex))
        System.out.println("I match!");
    else
        System.err.println("I don't match!");
    

    我哪里出错了,我的正则表达应该是什么(以及为什么)?

2 个答案:

答案 0 :(得分:6)

在正则表达式中,如果您想匹配1个或多个任何字符,请使用.+使用.*

0或更多

最好通过一个好的正则表达式教程,如:http://regular-expressions.info

您可以使用此正则表达式:

String regex = "^https?://.+?/#.*$";

答案 1 :(得分:0)

  

任何串-的-1-或者更多字符

这是.+,而不是*

  

任何串-的-O-或者更多字符

这是.*,而不是*