qregexp 예제

(Last Updated On: August 2, 2019)

QRegExp의 수량자는 펄의 탐욕스러운 수량자와 동일합니다 (하지만 위의 참고 참조). 비 탐욕 일치는 개별 수량자에 적용할 수 없지만 패턴의 모든 수량자에 적용할 수 있습니다. 예를 들어 Perl regexp ro+?m에 일치하려면 일부 정규식은 확정되지 않은 횟수와 일치할 수 있습니다. 예를 들어 입력 문자열이 “오프셋: 12 14 99 231 7″이고 정규어 rx가 (d+)+인 경우 일치하는 모든 숫자의 목록을 얻을 수 있기를 바랍니다. 그러나 rx.indexIn(str)을 호출한 후 capturedTexts()가 목록을 반환합니다(“12”, “12”), 즉 전체 일치는 “12”이고 일치하는 첫 번째 하위 표현식은 “12”입니다. 올바른 방법은 루프에서 cap()를 사용하는 것입니다. 정규식의 유효성은 와일드카드 플래그 설정에 따라 달라질 수 있습니다(예: *.html은 유효한 와일드카드 정규어이지만 잘못된 전체 정규식입니다). 괄호를 그룹화하고 캡처하기 위해서가 아닌 괄호를 사용하려면 캡처되지 않는 구문(예: ??:green|blue)을 사용할 수 있습니다. 캡처되지 않은 괄호는 `(?:` 및 끝 `)`로 시작됩니다. 이 예제에서는 `녹색` 또는 `파란색`을 일치시키지만 일치하는지 여부를 알 수 있도록 일치하지 는 않지만 실제로 찾은 색상은 알 수 없습니다. 캡처하지 않는 괄호를 사용하는 것이 정규시 엔진에서 책 보관을 줄여야 하므로 괄호 를 캡처하는 것보다 더 효율적입니다. 위에서 설명한 몇 가지 예제는 코드 예제 섹션에서 구현됩니다. 역사적 이유로 괄호 를 캡처하는 데 적용되는 수량자 (예 : *)는 다른 수량자보다 더 “탐욕”입니다.

예를 들어 a*(a*)는 “aaa”와 캡(1) == “aaa”와 일치합니다. 이 동작은 다른 정규식 엔진(특히 Perl)과 다릅니다. 보다 직관적인 캡처 동작을 얻으려면 QRegExp::RegExp2를 QRegExp 생성자 또는 호출 setPatternSyntax(QRegExp:RegExp2)로 지정합니다. 예를 들어 와일드카드 모드에 있고 파일 이름이 포함된 문자열이 있는 경우 *.html로 HTML 파일을 식별할 수 있습니다. 그러면 0개 이상의 문자가 일치하고 그 다음에 `h`, `t`, `m` 및 `l`이 그 다음에 표시됩니다. 미리 정의된 문자 집합 약어를 사용하는 것이 플랫폼 및 언어 에서 문자 범위를 사용하는 것보다 더 이식성이 높습니다. 예를 들어 [0-9]는 서양 알파벳의 숫자와 일치하지만 d는 모든 알파벳의 숫자와 일치합니다. 괄호를 사용하면 요소를 함께 그룹화하여 요소를 정량화하고 캡처할 수 있습니다. 예를 들어 단어 mail|letter |문자열과 일치하는 통신식이 있는 경우 단어 중 하나가 일치하지만 어느 단어와 일치하지 않는다는 것을 알고 있습니다. 괄호를 사용하면 해당 범위 내에서 일치하는 모든 것을 “캡처”할 수 있으므로 이 정규식을 “mail|letter | 통신”을 “전자 메일을 보냈다”라는 문자열과 일치하면 cap(또는 capturedTexts() 함수를 사용하여 일치하는 텍스트를 추출할 수 있습니다. 문자, 이 경우 `메일`.

구문을 QRegExp::와일드카드로 설정하면 셸과 같은 간단한 와일드카드 일치가 가능합니다. 예를 들어 r*.txt는 와일드카드 모드에서 문자열 readme.txt와 일치하지만 readme와 일치하지는 않습니다. QRegExp 클래스는 오래 전에 Qt 프레임워크의 일부로 도입되었습니다. 그것으로 작업하는 동안 나는 주요 결함을 발견, 내 목적과 심지어 강력한 프레임 워크가 완전히 결함이 없다는 사실의 또 다른 예를 렌더링.

Rick

After many years of being a full time freelance writer, and a long time resident of this state, I've decided to turn my full attention toward California by exploring all that it has to offer. My goal is to inspire you to get out there and explore this amazing state. Please follow my adventures and news content by visiting Calexplornia daily or clicking on one of my Social Media accounts below.