2014-11-17 2 views
2

독자적으로 사용할 때 완벽하게 작동하는 두 개의 정규식이 있습니다. |두 개의 정규식을 결합하십시오

First : ^.+\.((jpeg)|(gif)|(png))\s*$ : search for .jpeg,gif or png at the end of url 
Second : ^.+(javax.faces.resource|rfRes).* : search for two url patterns 

나는 "URL이 이미지의에 종료"또는 내가 사용하려고

"URL이 경로에 javax.faces.resource 또는 rfRes있다"하도록 위의 두 식을 결합하려는 연산자를 모두 참여하지만 아래 보이는 것처럼 작동하지 않는 것 같습니다 :

그러나 작동하지 않습니다.

아무도 위의 두 정규 표현식에 참여하는 데 도움주세요 수 있습니까?

+0

왜 결합할까요? 두 가지가 모두 맞는지 확인하십시오 .. – Maroun

답변

3

당신은 | 운전자의 주위에 여분의 공백이 있습니다

Your original regex 
^.+\.((jpeg)|(gif)|(png))\s*$ | ^.+(javax.faces.resource|rfRes).* 
^.+\.((jpeg)|(gif)|(png))\s*$|^.+(javax.faces.resource|rfRes).* 
Fixed regex    ^
          | 

귀하의 솔루션은 "문자열 의 끝과 다음 공간"또는 "공간 다음 시작의 일치하려고합니다 문자열. " 공백은 regexes에서 중요하다는 것을 기억하십시오.

+0

하, 완전히 놓쳤습니다 ... 이것이 올바른 해결책입니다 +1. 또 다른 방법은 e'X'tended 플래그를 사용하는 것입니다. – Unihedron

+0

@Doorknob : 도움을 주셔서 감사합니다. 그게 효과가 있었어. 나는 정말로 공백을 놓쳤다. – Atul

2

결합 된 표현의 공백이 잘못되었습니다. 줄 끝 뒤나 줄 시작 전에 공간이 필요합니다. 이는 줄 단위 입력에서 불가능합니다.

추가 개선 사항으로 불필요한 "무언가"부분을 제거 할 수있을뿐만 아니라 많은 수의 중복 된 괄호를 제거 할 수 있습니다.

javax\.faces\.resource|rfRes|\.(jpeg|gif|png)\s*$ 

공지 사항 또한 리터럴 마침표 문자의 인용 (혼자 .는 임의의 문자와 일치) 적당한.

관련 문제