Java 正则表达式和带有元字符的匹配URL

Java 正则表达式和带有元字符的匹配URL,java,regex,Java,Regex,我很难找到与以下字符串匹配的正则表达式 Korben;http://feeds.feedburner.com/KorbensBlog-UpgradeYourMind?format=xml;1 一个问题是避开问号。Java的模式匹配器似乎不接受\?作为有效的转义序列,但它也无法与myregexp.com上的测试人员一起工作 以下是我目前掌握的情况: ([a-zA-Z0-9])+;http://([a-zA-Z0-9./-]+);[0-9]+ 有什么建议吗 编辑:最初的目的是匹配第一个分号之后可

我很难找到与以下字符串匹配的正则表达式

Korben;http://feeds.feedburner.com/KorbensBlog-UpgradeYourMind?format=xml;1
一个问题是避开问号。Java的模式匹配器似乎不接受
\?
作为有效的转义序列,但它也无法与myregexp.com上的测试人员一起工作

以下是我目前掌握的情况:

([a-zA-Z0-9])+;http://([a-zA-Z0-9./-]+);[0-9]+
有什么建议吗


编辑:最初的目的是匹配第一个分号之后可以找到的所有URL。

如果要将表达式放入字符串中,还需要转义“\”。即:

String expr = "([a-zA-Z0-9])+;http://([a-zA-Z0-9./\\-\\?]+);[0-9]+";

如果“-”不是字符类([…])构造中的最后一个字符,则还需要对其进行转义。

[?]
匹配“?”

如果表达式在字符串中,则可能需要转义反斜杠。类似于
“\\?”


在RexExp编辑器网站上为我工作。

您也可以在角色类的开头添加-。感谢codeka和其他回复者。经过一些测试后,以下内容应与所有URL匹配:([a-zA-Z0-9])+;http://([a-zA-Z0-9./\-\\?=~]+);[0-9]+您希望括号内的第一个加号:
([a-zA-Z0-9]+)
,而不是
([a-zA-Z0-9])+
。此外,正如@DVK所指出的,您不需要在字符类中避开问号<代码>[a-zA-Z0-9./?-]很好用。我很想以后用它,而不是用反斜杠;)
([a-zA-Z0-9]+);http://([a-zA-Z0-9./-]+)(\?[^;]+);([0-9]+)