답변1
이름을 지어주시면 됩니다큰PCRE의 정규식은 다음과 같습니다.
(?<big>[a-zA-Z0-9]+)
그 이후의 모든 내용은 ?<name>
해당 이름으로 기록됩니다.
라고정규식 서브루틴
따라서 반복( ?&name
)이 쉬워집니다.
^(?<big>[a-zA-Z0-9]+)(,(?&big))*$
따라서 IP 일치 등이 더 간단해집니다.
^(?<ip>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.(?&ip)){3}$
다음과 같이 grep과 함께 사용하십시오.
grep -P '^(?<ip>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(.(?&ip)){3}$'
답변2
perl
또는 PCRE 정규식을 사용하는 경우 (?1)
첫 번째 캡처 그룹에서 정규식을 참조하는 것과 같은 방법을 사용하여 중복을 피할 수 있습니다.
grep -Px '(?:(\w{3}),)*(?1)'
이는 3개의 문자 단어로 구성된 비어 있지 않은 쉼표로 구분된 목록과 일치합니다. 로 변경:
grep -Px '(?:(?:(\w{3}),)*(?1))?'
빈 목록이 허용됩니다.
답변3
사용 해주세요 -^((([a-zA-Z0-9]){1,45},){2}([a-zA-Z0-9]){1,45})$
여기서는 영어의 가장 긴 단어가 45자이므로 최대 글자 수를 45자로 설정했는데, 요구 사항에 따라 변경할 수 있습니다.
답변4
정규식은 간단합니다. [^,]$
질문에 답해 보세요.
의견을 보내주신 @Hkoof에게 감사드립니다!