2013-12-07 2 views
0

JavaScript를 사용하여 URL을 전달하는 Java 임베디드 응용 프로그램에서 사용하기 위해 replace를 사용하여 regexp를 만들려고합니다. 내가 지금까지 가지고하는 것은 그러나, 두 번째 변수없이 환경에 전달하는 것을 허용하지 않습니다, $2$3$4변수가 문자열과 일치하지 않는 경우 Regex를 대체합니다.

이 설정 교체와

(bi.)(.*\.)([^.]+)(.com)$입니다. 내가 필요로하는 것은 무언가이다. IF .*\. is prd001 THEN '' ELSE .*\. 나는 그것이 존재하는 곳의 prd001을 부정 할 필요가 있지만, 그 부분이 대체 부분의 다른 것이라면 통과시킨다.

나는이 개념에 매우 익숙하며, 이것이 어떤 언어인지 묻는다면, 우리의 응용 프로그램이 JAVA로 작성된 것 외에는 말할 수 없을 것입니다. 나는 나중에 이스케이프 문자가 필요하다는 것을 알고 그 부분에 자신감을 가지고 있습니다. 그냥 정규식으로졌다. 비어있을 것 $2을 제시하지 않을 경우 당신이있는 경우 지금은 단지 (.*\.)을 사용합니다 (bi.)(.*\.)?([^.]+)(.com)$

에 정규식을 변경

답변

1

나는 당신의 요구를 이해하고 원래 정규식 (난 당신이 초기 캡처 그룹의 bi\. 의미가 거라고 생각) 올바른 가정하면, 다음과 같은 작업을해야합니다 : http://rubular.com/r/oU1ls2Gy6x 같이

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

http://rubular.com/r/YDhYObKe1c

?: 구문을 사용하면 정규식 기계가 다음 표현식과 일치하지만 이 아닌 캡처 그룹을 생성합니다. 두 번째 캡처 그룹은 prod001.이없는 경우에만 비어 있습니다.

+0

루블 링크는 단 하나의 예제 URL을 가지고 있습니다. 비 prod url 및 기타 가장자리 사례에 대한 예제 추가 – Bohemian

+0

@ 보헤미안 단일 루블러에서 여러 테스트 문자열 포함하는 방법을 알고 있습니까? –

+0

@ 보헤미안 비 (non-prod) 테스트 문자열을 추가했지만 질문에 애매한 점을 감안할 때 어떤 엣지 케이스에 포함 시킬지 잘 모르겠습니다. –

0

시도를 제공하고, 따라서 수있는 모든 도움을 주셔서 감사합니다.

+1

나는 bi.123.com과 같은 예제를 모으기 위해 물음표를 통합했습니다. 고마워, 큰 도움이되었지만 혼자 대답이 아니었다. – user1983682

관련 문제