我正在尝试创建一个带有replace的regexp,以便在java嵌入式应用程序中使用,该应用程序将通过点击来传递URL。到目前为止我所拥有的是
(bi.)(.*\.)([^.]+)(.com)$
,将替换设为$2$3$4
然而,这不允许传递到没有第二个变量的环境。我需要的东西是IF .*\. is prd001 THEN '' ELSE .*\.
我需要否定它存在的prd001,但如果替换部分中有任何其他内容,则传递该部分。
我对这些概念很陌生,如果你问这是什么语言,我可能无法告诉你除了我们的应用程序是用JAVA编写的。我知道我以后会需要转义字符,并对此部分充满信心。只是迷失了正则表达式。感谢您提供的任何帮助
答案 0 :(得分:1)
假设我理解您的请求并且您的原始正则表达式是正确的(我认为您可能在初始捕获组中意味着bi\.
),以下内容应该有效:
(bi.)(?:(?:prd001\.)|(.*\.))([^.]+)(.com)
,如http://rubular.com/r/oU1ls2Gy6x和http://rubular.com/r/YDhYObKe1c
所示 ?:
构造告诉正则表达式机制匹配以下表达式,但不创建捕获组。因此,只有当prod001.
不存在时,第二个捕获组才会为空。
答案 1 :(得分:0)
尝试将正则表达式更改为(bi.)(.*\.)?([^.]+)(.com)$
现在它只会使用(.*\.)
(如果它存在),因此如果不存在,$2
将为空。