나는 하나의 점 및 파일 이름을 가진 파일 이름의 유효성을 검사하는 정규 표현식을 구축을 위해 노력하고이 세 부분은 밑줄정규식이 아래 내 정규식
로 구분 한 하나의 점으로 파일 이름을 적용합니다
ABA_ABA_2015478.js.csv를 실패 할 경우 - - 입력 문자열
ABA_ABA_2015_478.csv는
를 실패 할 경우 0ABC_BCD_XYZ.js - 전달해야합니다
도와주세요.
나는 하나의 점 및 파일 이름을 가진 파일 이름의 유효성을 검사하는 정규 표현식을 구축을 위해 노력하고이 세 부분은 밑줄정규식이 아래 내 정규식
로 구분 한 하나의 점으로 파일 이름을 적용합니다
ABA_ABA_2015478.js.csv를 실패 할 경우 - - 입력 문자열
ABA_ABA_2015_478.csv는
를 실패 할 경우 0ABC_BCD_XYZ.js - 전달해야합니다
도와주세요.
는이 정규식을 사용할 수 있습니다
^(?<appname>[^_.]+)_(?<eventtype>[^_.]+)_(?<counter>[^._]*)\.[^.]+$
당신이 다음 앵커가 암시이기 때문에 앵커를 사용할 필요가 없습니다 자바에서 matches()
방법을 사용하는 경우.
정규식 해체 :
^
: 시작(?<appname>[^_.]+)
매치와 그룹 어떤(?<eventtype>[^_.]+)
_
도트 아닌 1+ 길이의 캐릭터 매치와 그룹 1의 모든 문자 + 길이는 _
이 아니며 점은_
: 일치 a _
(?<counter>[^._]*)
매치와 그룹 _
도트 아닌 1+ 길이의 문자\.
:$
도트되지 1+ 길이의 모든 문자를 일치 : 끝[^.]+
을 일치 자바 사용을 위해 :
final String re = "^(?<appname>[^_.]+)_(?<eventtype>[^_.]+)_(?<counter>[^._]*)\\.[^.]+$";
정규 표현식에서 점 문자는 "임의의 문자"를 의미합니다. 백 슬래시를 사용하여 이스케이프 처리해야합니다 (Java에서는 역 슬래시를 두 번 사용하여 Java 문자열에서 백 슬래시 자체를 이스케이프 처리해야합니다).
오른쪽 부분에 대해서는 과 같은 문자를 사용할 수 있습니다. 또한 왼쪽 부분에서 부품에서 도트를 제외하십시오 ([^_.]*
또는 비어 있지 않은 경우 [^_.]+
).
'^ (? [^ _] *) _ (? [^ _] *) _ (? [^ _] *) \. [^ _.] * $' –