2014-02-27 6 views
-2

내가 문자열에서 볼 수 있듯이 '/whatever/whatver/whatever/v{int}' 같은 문자열이 문자열이 어떤 접두사 '/whaterver'으로 구성되어 있고, 문자열은 접두사를 가지고 여부, 하나 확인하고 마지막 부분은 /v{int} 내가 쓴 정기적 인 표현 (^[/][a-zA-Z]+)*/v[0-9]+, (^[/][a-zA-Z]+)*은 접두어가 나타날 수 있음을 의미하고 /v[0-9]+은 마지막 부분과 일치합니다.이 정규 표현식에 도움이 필요한

표현식이 문자열과 완전히 일치 할 수 있지만 맞지는 않습니다.

아무도 도와 줄 수 있습니까?

+0

(^ [/] [A-ZA-Z] +)/V [0-9] + 당신이 사용하는 어떤 프로그래밍 언어를 여러 슬래시 – Simson

+1

일치하지 않습니다? 구체적인 예를 들어 줄 수 있습니까? –

+0

@Jack 그것은 프로그래밍 언어가 아니라 정규 표현식 표준에 관한 것입니다. –

답변

0

우선 무엇이 부정기가 / 문자입니까?

둘째, 여러 접두사를 가질 수 있으므로 접두어의 다중 카디널리티도 확인해야합니다 (추가 한 * 와일드 카드 참조).

이 표현식 ([/][a-zA-Z]+)*/v[0-9]+은 입력 내용과 일치하며 접두사없는 입력과도 일치합니다.

EDIT 경우

당신이 (당신이 정확하게 일치 할 경우 중복 비록) 시작 -의 라인 마커를 유지하려면, 당신은 *로 표시된 반복 블록 (형성을 제외해야 와일드 카드)를 사용할 수 있습니다. 엔진이 각 접두사에서 줄 바꿈을 찾지 않기 때문입니다.

^([/][a-zA-Z]+)*/v[0-9]+ 
+3

^은 내부에 없으므로 부정이 아니며 "시작 부분에 있습니다". –

+0

@Andrei Nicusan '///whatever/whatever/.../v{int}'와 같이 처음에는 많은 슬래시를 사용하지 않으므로 정확한 일치를 원합니다. http://regexpal.com/에 정규 표현식을 붙여넣고 위의 문자열과 일치시킬 수 있습니다. 내 문제를 해결했다. 덕분에 – user3231931

+0

내가 평소 사용하는 정규 표현식이기도합니다. –

0
echo "/whatever/whatver/whatever/v1654" | grep -E '^/?([a-zA-Z]+/)+v[0-9]+$' 
/whatever/whatver/whatever/v1654 
관련 문제