正则表达式替换IF变量与字符串不匹配

时间:2013-12-07 18:50:14

标签: java regex

我正在尝试创建一个带有replace的regexp,以便在java嵌入式应用程序中使用,该应用程序将通过点击来传递URL。到目前为止我所拥有的是

(bi.)(.*\.)([^.]+)(.com)$,将替换设为$2$3$4

然而,这不允许传递到没有第二个变量的环境。我需要的东西是IF .*\. is prd001 THEN '' ELSE .*\.我需要否定它存在的prd001,但如果替换部分中有任何其他内容,则传递该部分。

我对这些概念很陌生,如果你问这是什么语言,我可能无法告诉你除了我们的应用程序是用JAVA编写的。我知道我以后会需要转义字符,并对此部分充满信心。只是迷失了正则表达式。感谢您提供的任何帮助

2 个答案:

答案 0 :(得分:1)

假设我理解您的请求并且您的原始正则表达式是正确的(我认为您可能在初始捕获组中意味着bi\.),以下内容应该有效:

(bi.)(?:(?:prd001\.)|(.*\.))([^.]+)(.com)

,如http://rubular.com/r/oU1ls2Gy6xhttp://rubular.com/r/YDhYObKe1c

所示

?:构造告诉正则表达式机制匹配以下表达式,但创建捕获组。因此,只有当prod001.不存在时,第二个捕获组才会为空。

答案 1 :(得分:0)

尝试将正则表达式更改为(bi.)(.*\.)?([^.]+)(.com)$

现在它只会使用(.*\.)(如果它存在),因此如果不存在,$2将为空。