선택적 후행 문자열을 제거하여 선행 문자열을 추출하려고합니다. 후행 문자열은 가능한 선행 문자열의 하위 집합이지만 그 반대는 아닙니다. 선행 문자열이 [a-z]+
이고 후행 문자열이 c
인 경우를 가정하십시오. 따라서 "abc"에서 "ab"를 추출하고 "ab"에서 "ab"를 얻고 싶습니다. 이런 식으로 뭔가 :정규 표현식 - 욕심쟁이 일치?
^([a-z]+)(?:c|)
문제는 [a-z]+
이 대안의 빈 옵션을 사용하여 전체 문자열과 일치하는지, 그래서 움켜 값이 "ABC"또는 "AB"입니다. ((?:
은 두 번째 파트를 가져 오지 말라고 알려줍니다.) 나는 더 긴 옵션 또는 대안의 첫 번째 옵션을 사용하고 첫 번째 옵션과 일치하는 것을 결정하는 방법을 원합니다.
:
^([a-z]+)c|^([a-z]+)
내가이 두 가지 가능한 대안의 첫 번째 일치하는 것을 선호한다고 생각하지만, 나는 위와 같은 결과를 얻을 수 .
저는 R에서 이것을하고 있습니다. 그래서 POSIX 또는 Perl 정규 표현식 라이브러리를 사용할 수 있습니다.
(실제 문제는 선물 거래와 관련이 있으며, [A-Z0-9]+
과 같은 루트 "계좌 이름"과 [FGHJKMNQUVXZ][0-9]{1,2}
과 같은 "만료 코드"가 있습니다. "ZNH3"과 같은 기호가 주어지면 "H3" .. "ZN"를 얻을하지만 그것을 줄 경우 "ZN"나는 또 다시 "ZN를"싶어하는)
PHP 코드? 사용자가 R에서 이것을 원한다고 생각합니다 – BrodieG
PHP 코드에 사과드립니다. 그러나 정규 표현식 분석은 여전히 유효합니다. 구체적으로 : '욕심쟁이가 아닌 일치,'옵션 접미사 ','문자열 끝 '에 고정, 나는 PHP를 해킹 할 것입니다 .-) –