2013-04-17 43 views
0

以下一段代码检查相同的变量部分/en(^$|.*),它是空的或任何字符。所以表达式应该匹配/en AND /en/bla/en/blue等 但是,表达式在检查/en时不起作用。如何使用零字符RegEx检查Java中的字符串?

"/en".matches("/en(^$|.*)") 

有没有办法让这个空的正则表达式检查(^ $)与java执行?

编辑

我的意思是:有没有一种方法,使这段代码返回true

回答

4

你现在正在做的是检查en是否跟着字符串的开始,然后是字符串的结尾(这没有意义,因为字符串的开头需要是第一个)或其他任何东西。这应该工作:

"/en".matches("/en(|.*)") 

或者只是使用?(可选):

"/en".matches("/en(.*)?") 

但它是毫无意义的,因为*是零个或多个(所以一个空字符串匹配.*),就这应该这样做:

"/en".matches("/en.*") 

编辑:

您的代码已经返回true,但它不匹配^$部分,而是.*(与上面类似)。

我要指出,你不妨使用startsWith,除非你的真实数据比较复杂:|(。*)?

"/en".startsWith("/en") 
+0

'(*)'=='''==( 。*)' –

+1

@DuncanJones如果你使用'matches'捕获组没有目的,我知道。而且我确定OP可以在需要时将其添加回去。 – Dukeling

+0

使用你的想法,最终的正则表达式会变成这样。 (| \\ /.*$)。谢谢您的帮助! – justastefan

3

有没有办法让这段代码返回true?

"/en".matches("/en(^$|.*)") 

该代码确实返回true。去尝试一下!

但是,您的模式是不必要的复杂。尝试:

"/en".matches("/en.*") 

这将匹配/en其次是任何东西(包括无)。