以下一段代码检查相同的变量部分/en(^$|.*)
,它是空的或任何字符。所以表达式应该匹配/en
AND /en/bla
,/en/blue
等 但是,表达式在检查/en
时不起作用。如何使用零字符RegEx检查Java中的字符串?
"/en".matches("/en(^$|.*)")
有没有办法让这个空的正则表达式检查(^ $)与java执行?
编辑
我的意思是:有没有一种方法,使这段代码返回true
?
以下一段代码检查相同的变量部分/en(^$|.*)
,它是空的或任何字符。所以表达式应该匹配/en
AND /en/bla
,/en/blue
等 但是,表达式在检查/en
时不起作用。如何使用零字符RegEx检查Java中的字符串?
"/en".matches("/en(^$|.*)")
有没有办法让这个空的正则表达式检查(^ $)与java执行?
编辑
我的意思是:有没有一种方法,使这段代码返回true
?
你现在正在做的是检查en
是否跟着字符串的开始,然后是字符串的结尾(这没有意义,因为字符串的开头需要是第一个)或其他任何东西。这应该工作:
"/en".matches("/en(|.*)")
或者只是使用?
(可选):
"/en".matches("/en(.*)?")
但它是毫无意义的,因为*
是零个或多个(所以一个空字符串匹配.*
),就这应该这样做:
"/en".matches("/en.*")
编辑:
您的代码已经返回true,但它不匹配^$
部分,而是.*
(与上面类似)。
我要指出,你不妨使用startsWith
,除非你的真实数据比较复杂:|(。*)?
"/en".startsWith("/en")
有没有办法让这段代码返回true?
"/en".matches("/en(^$|.*)")
该代码确实返回true。去尝试一下!
但是,您的模式是不必要的复杂。尝试:
"/en".matches("/en.*")
这将匹配/en
其次是任何东西(包括无)。
'(*)'=='''==( 。*)' –
@DuncanJones如果你使用'matches'捕获组没有目的,我知道。而且我确定OP可以在需要时将其添加回去。 – Dukeling
使用你的想法,最终的正则表达式会变成这样。 (| \\ /.*$)。谢谢您的帮助! – justastefan