Java 正则表达式模式-查询
我试图找到并创建一个满足以下规则的模式Java 正则表达式模式-查询,java,regex,Java,Regex,我试图找到并创建一个满足以下规则的模式 mydomain.com www.mydomain.com www.alternatedomain.com www100.mydomain.com online.mydomain.com subl.mydomain.com 到目前为止,我创建的模式不起作用 我在mydomain之前可能有值,也可能没有值 private static final String MY_PATTERN = "((www*|online|subl)*\\.((mydomain
mydomain.com
www.mydomain.com
www.alternatedomain.com
www100.mydomain.com
online.mydomain.com
subl.mydomain.com
到目前为止,我创建的模式不起作用
我在mydomain之前可能有值,也可能没有值
private static final String MY_PATTERN =
"((www*|online|subl)*\\.((mydomain|alternatedomain)\\.(com)$))";
如果它有值,它应该属于一个限制集Try((www\\d*| online | subl)\\)?(mydomain | alternatedomain)\\\\\.com
你可以在线测试你的正则表达式,但别忘了用一个\\
替换\
(因为在Java代码中\\
表示正则表达式中的\
)我建议使用
String rx = "^(?:(?:www\\d*|online|subl)*\\.)?(?:mydomain|alternatedomain)\\.com$";
见
我删除或转换为模式中的所有捕获组。如果以后要使用字符串的这些部分,请还原它们
如果将regex与.matches()
方法一起使用,则删除^
和$
,它们是多余的,因为该方法确保整个字符串与模式匹配
详细信息
-字符串的开头^
-可选的非捕获组匹配(?:(?:www\\d*| online | subl)*\\)?
-(?:www\\d*| online | subl)*
和0+位,或www
或online
subl
-一个点\\.
-与(?:mydomain | alternatedomain)
或mydomain
alternatedomain
-\\.com
子字符串.com
-字符串结束$
(?:…)
。