QRegularExpression Class
QRegularExpression 클래스는 정규식을 사용하여 패턴 매칭을 제공합니다. 더 보기...
Header: | #include <QRegularExpression> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- 사용되지 않는 멤버
- QRegularExpression은 암시적으로 공유되는 클래스 및 문자열 데이터용 클래스의 일부입니다.
이 클래스는 동등 비교가 가능합니다.
참고: 이 클래스의 모든 함수는 재진입합니다.
공용 유형
enum | MatchOption { NoMatchOption, AnchoredMatchOption, AnchorAtOffsetMatchOption, DontCheckSubjectStringMatchOption } |
flags | MatchOptions |
enum | MatchType { NormalMatch, PartialPreferCompleteMatch, PartialPreferFirstMatch, NoMatch } |
enum | PatternOption { NoPatternOption, CaseInsensitiveOption, DotMatchesEverythingOption, MultilineOption, ExtendedPatternSyntaxOption, …, UseUnicodePropertiesOption } |
flags | PatternOptions |
(since 6.0) enum | WildcardConversionOption { DefaultWildcardConversion, UnanchoredWildcardConversion, NonPathWildcardConversion } |
flags | WildcardConversionOptions |
공용 함수
QRegularExpression() | |
QRegularExpression(const QString &pattern, QRegularExpression::PatternOptions options = NoPatternOption) | |
QRegularExpression(const QRegularExpression &re) | |
(since 6.1) | QRegularExpression(QRegularExpression &&re) |
~QRegularExpression() | |
int | captureCount() const |
QString | errorString() const |
QRegularExpressionMatchIterator | globalMatch(const QString &subject, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const |
(since 6.5) QRegularExpressionMatchIterator | globalMatchView(QStringView subjectView, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const |
bool | isValid() const |
QRegularExpressionMatch | match(const QString &subject, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const |
(since 6.5) QRegularExpressionMatch | matchView(QStringView subjectView, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const |
QStringList | namedCaptureGroups() const |
void | optimize() const |
QString | pattern() const |
qsizetype | patternErrorOffset() const |
QRegularExpression::PatternOptions | patternOptions() const |
void | setPattern(const QString &pattern) |
void | setPatternOptions(QRegularExpression::PatternOptions options) |
void | swap(QRegularExpression &other) |
QRegularExpression & | operator=(QRegularExpression &&re) |
QRegularExpression & | operator=(const QRegularExpression &re) |
정적 공용 멤버
QString | anchoredPattern(QStringView expression) |
QString | anchoredPattern(const QString &expression) |
QString | escape(QStringView str) |
QString | escape(const QString &str) |
(since 6.0) QRegularExpression | fromWildcard(QStringView pattern, Qt::CaseSensitivity cs = Qt::CaseInsensitive, QRegularExpression::WildcardConversionOptions options = DefaultWildcardConversion) |
QString | wildcardToRegularExpression(QStringView pattern, QRegularExpression::WildcardConversionOptions options = DefaultWildcardConversion) |
QString | wildcardToRegularExpression(const QString &pattern, QRegularExpression::WildcardConversionOptions options = DefaultWildcardConversion) |
관련 비회원
size_t | qHash(const QRegularExpression &key, size_t seed = 0) |
bool | operator!=(const QRegularExpression &lhs, const QRegularExpression &rhs) |
QDataStream & | operator<<(QDataStream &out, const QRegularExpression &re) |
QDebug | operator<<(QDebug debug, QRegularExpression::PatternOptions patternOptions) |
QDebug | operator<<(QDebug debug, const QRegularExpression &re) |
bool | operator==(const QRegularExpression &lhs, const QRegularExpression &rhs) |
QDataStream & | operator>>(QDataStream &in, QRegularExpression &re) |
상세 설명
정규식 또는 정규식은 문자열과 텍스트를 처리하는 매우 강력한 도구입니다. 다음과 같은 여러 상황에서 유용합니다,
유효성 검사 | 정규식은 하위 문자열이 정수인지, 공백이 없는지 등 일부 기준을 충족하는지 여부를 테스트할 수 있습니다. |
검색 | 정규식은 단순한 부분 문자열 일치보다 더 강력한 패턴 일치를 제공합니다(예: 메일, 편지, 서신 중 하나만 일치하고 이메일, 우편배달부, 우편함, 레터박스 등의 단어는 일치하지 않는 경우). |
검색 및 바꾸기 | 정규식은 하위 문자열의 모든 항목을 다른 하위 문자열로 대체할 수 있습니다(예: &의 모든 항목을 &로 대체, & 뒤에 이미 앰프를 붙인 경우 제외). |
문자열 분할 | 정규식은 탭으로 구분된 문자열을 분할하는 등 문자열을 분리해야 하는 위치를 식별하는 데 사용할 수 있습니다. |
이 문서는 정규식을 사용한 패턴 매칭에 대한 완전한 참조서가 아니며, 다음 부분을 읽으려면 Perl과 유사한 정규식과 그 패턴 구문에 대한 기본적인 지식이 필요합니다.
정규식에 대한 좋은 참고 자료는 다음과 같습니다:
- 정규 표현식 마스터하기 (제3판)(Jeffrey E. F. Friedl 저, ISBN 0-596-52812-4);
- PCRE(Perl 호환 정규 표현식의 참조 구현)에서 지원하는 패턴 구문을 설명하는 pcrepattern(3) 매뉴얼 페이지;
- Perl의 정규식 문서 및 Perl의 정규식 튜토리얼.
소개
QRegularExpression은 Perl 호환 정규 표현식을 구현합니다. 유니코드를 완벽하게 지원합니다. QRegularExpression에서 지원하는 정규식 구문에 대한 개요는 앞서 언급한 pcrepattern(3) 매뉴얼 페이지를 참조하세요. 정규식은 패턴 문자열과 패턴 문자열의 의미를 변경하는 패턴 옵션 집합의 두 가지로 구성됩니다.
QRegularExpression 생성자에 문자열을 전달하여 패턴 문자열을 설정할 수 있습니다:
QRegularExpression re("a pattern");
이렇게 하면 패턴 문자열이 a pattern
로 설정됩니다. setPattern() 함수를 사용하여 기존 QRegularExpression 객체에 패턴을 설정할 수도 있습니다:
QRegularExpression re; re.setPattern("another pattern");
C++ 리터럴 문자열 규칙에 따라 패턴 문자열 내부의 모든 백슬래시를 다른 백슬래시로 이스케이프 처리해야 한다는 점에 유의하세요:
// matches two digits followed by a space and a word QRegularExpression re("\\d\\d \\w+"); // matches a backslash QRegularExpression re2("\\\\");
또는 원시 문자열 리터럴을 사용할 수 있는데, 이 경우 패턴에서 백슬래시를 이스케이프 처리할 필요가 없으며 R"(...)"
사이의 모든 문자는 원시 문자로 간주됩니다. 다음 예제에서 볼 수 있듯이 이렇게 하면 패턴을 간단하게 작성할 수 있습니다:
// matches two digits followed by a space and a word QRegularExpression re(R"(\d\d \w+)");
pattern() 함수는 현재 QRegularExpression 객체에 대해 설정된 패턴을 반환합니다:
QRegularExpression re("a third pattern"); QString pattern = re.pattern(); // pattern == "a third pattern"
패턴 옵션
하나 이상의 패턴 옵션을 설정하여 패턴 문자열의 의미를 수정할 수 있습니다. 예를 들어 QRegularExpression::CaseInsensitiveOption 을 설정하여 대소문자를 구분하지 않고 일치하도록 패턴을 설정할 수 있습니다.
다음과 같이 QRegularExpression 생성자에 옵션을 전달하여 설정할 수 있습니다:
// matches "Qt rocks", but also "QT rocks", "QT ROCKS", "qT rOcKs", etc. QRegularExpression re("Qt rocks", QRegularExpression::CaseInsensitiveOption);
또는 기존 QRegularExpressionObject에서 setPatternOptions() 함수를 사용할 수 있습니다:
QRegularExpression re("^\\d+$"); re.setPatternOptions(QRegularExpression::MultilineOption); // re matches any line in the subject string that contains only digits (but at least one)
patternOptions() 함수를 사용하여 현재 QRegularExpression 객체에 설정된 패턴 옵션을 가져올 수 있습니다:
QRegularExpression re = QRegularExpression("^two.*words$", QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption); QRegularExpression::PatternOptions options = re.patternOptions(); // options == QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption
각 패턴 옵션에 대한 자세한 내용은 QRegularExpression::PatternOption 열거형 문서를 참조하세요.
일치 유형 및 일치 옵션
match() 및 globalMatch() 함수의 마지막 두 인수는 일치 유형과 일치 옵션을 설정합니다. 일치 유형은 QRegularExpression::MatchType 열거형 값이며, "전통적인" 일치 알고리즘은 NormalMatch 일치 유형(기본값)을 사용하여 선택됩니다. 제목 문자열에 대해 정규식을 부분적으로 일치시킬 수도 있습니다. 자세한 내용은 partial matching 섹션을 참조하세요.
일치 옵션은 하나 이상의 QRegularExpression::MatchOption 값의 집합입니다. 이 옵션은 제목 문자열에 대한 정규 표현식의 특정 일치 방식을 변경합니다. 자세한 내용은 QRegularExpression::MatchOption 열거형 문서를 참조하세요.
일반 일치
일치를 수행하려면 match() 함수를 호출하여 일치시킬 문자열을 전달하면 됩니다. 이 문자열을 제목 문자열이라고 합니다. match () 함수의 결과는 일치 결과를 검사하는 데 사용할 수 있는 QRegularExpressionMatch 객체입니다. 예를 들어
// match two digits followed by a space and a word QRegularExpression re("\\d\\d \\w+"); QRegularExpressionMatch match = re.match("abc123 def"); bool hasMatch = match.hasMatch(); // true
일치에 성공하면 (암시적) 캡처 그룹 번호 0을 사용하여 전체 패턴과 일치하는 하위 문자열을 검색할 수 있습니다( extracting captured substrings 섹션도 참조하세요):
QRegularExpression re("\\d\\d \\w+"); QRegularExpressionMatch match = re.match("abc123 def"); if (match.hasMatch()) { QString matched = match.captured(0); // matched == "23 def" // ... }
match() 함수의 인수로 오프셋을 전달하여 제목 문자열 내부의 임의의 오프셋에서 일치를 시작할 수도 있습니다. 다음 예에서 "12 abc"
은 오프셋 1에서 일치를 시작하기 때문에 일치하지 않습니다:
QRegularExpression re("\\d\\d \\w+"); QRegularExpressionMatch match = re.match("12 abc 45 def", 1); if (match.hasMatch()) { QString matched = match.captured(0); // matched == "45 def" // ... }
캡처된 하위 문자열 추출하기
QRegularExpressionMatch 객체에는 패턴 문자열에서 캡처 그룹에 의해 캡처된 하위 문자열에 대한 정보도 포함되어 있습니다. captured () 함수는 n번째 캡처 그룹이 캡처한 문자열을 반환합니다:
QRegularExpression re("^(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)$"); QRegularExpressionMatch match = re.match("08/12/1985"); if (match.hasMatch()) { QString day = match.captured(1); // day == "08" QString month = match.captured(2); // month == "12" QString year = match.captured(3); // year == "1985" // ... }
패턴의 캡처 그룹은 1부터 번호가 매겨지며, 암시적 캡처 그룹 0은 전체 패턴과 일치하는 하위 문자열을 캡처하는 데 사용됩니다.
capturedStart() 및 capturedEnd() 함수를 사용하여 캡처된 각 하위 문자열의 시작 및 끝 오프셋(주제 문자열 내부)을 검색할 수도 있습니다:
QRegularExpression re("abc(\\d+)def"); QRegularExpressionMatch match = re.match("XYZabc123defXYZ"); if (match.hasMatch()) { int startOffset = match.capturedStart(1); // startOffset == 6 int endOffset = match.capturedEnd(1); // endOffset == 9 // ... }
이러한 모든 함수에는 명명된 캡처된 하위 문자열을 추출하기 위해 QString 을 매개변수로 사용하는 오버로드가 있습니다. 예를 들어
QRegularExpression re("^(?<date>\\d\\d)/(?<month>\\d\\d)/(?<year>\\d\\d\\d\\d)$"); QRegularExpressionMatch match = re.match("08/12/1985"); if (match.hasMatch()) { QString date = match.captured("date"); // date == "08" QString month = match.captured("month"); // month == "12" QString year = match.captured("year"); // year == 1985 }
글로벌 매칭
전역 일치는 주제 문자열 내에서 주어진 정규식의 모든 출현을 찾는 데 유용합니다. 주어진 문자열에서 단어가 \w+
패턴과 일치하는 하위 문자열인 모든 단어를 추출하고 싶다고 가정해 보겠습니다.
QRegularExpression::globalMatch 는 결과를 반복하는 데 사용할 수 있는 Java와 유사한 정방향 이터레이터인 QRegularExpressionMatchIterator 를 반환합니다. 예를 들어
QRegularExpression re("(\\w+)"); QRegularExpressionMatchIterator i = re.globalMatch("the quick fox");
Java와 유사한 반복자이기 때문에 QRegularExpressionMatchIterator 은 첫 번째 결과 바로 앞을 가리킵니다. 모든 결과는 QRegularExpressionMatch 객체로 반환됩니다. hasNext () 함수는 결과가 하나 이상 더 있는 경우 참을 반환하고 next()은 다음 결과를 반환하고 반복기를 진행합니다. 이전 예제에서 계속합니다:
QStringList words; while (i.hasNext()) { QRegularExpressionMatch match = i.next(); QString word = match.captured(1); words << word; } // words contains "the", "quick", "fox"
peekNext()를 사용하여 반복기를 진행하지 않고 다음 결과를 가져올 수도 있습니다.
예를 들어 다음과 같이 범위 기반 for 루프에서 QRegularExpression::globalMatch 의 결과를 간단히 사용할 수도 있습니다:
// using a raw string literal, R"(raw_characters)", to be able to use "\w" // without having to escape the backslash as "\\w" QRegularExpression re(R"(\w+)"); QString subject("the quick fox"); for (const QRegularExpressionMatch &match : re.globalMatch(subject)) { // ... }
match()를 사용한 일반 일치와 마찬가지로 시작 오프셋과 하나 이상의 일치 옵션을 globalMatch() 함수에 전달할 수 있습니다.
부분 일치
부분 일치는 제목 문자열의 끝에 도달하면 얻어지지만 일치를 성공적으로 완료하려면 더 많은 문자가 필요합니다. 부분 일치는 일반적으로 일치 알고리즘의 최적화를 많이 적용할 수 없기 때문에 일반 일치보다 훨씬 비효율적입니다.
부분 일치는 QRegularExpression::match 또는 QRegularExpression::globalMatch 을 호출할 때 PartialPreferCompleteMatch 또는 PartialPreferFirstMatch 의 일치 유형을 지정하여 명시적으로 요청해야 합니다. 부분 일치가 발견되면 match()에서 반환한 QRegularExpressionMatch 객체에서 hasMatch() 함수를 호출하면 false
이 반환되지만 hasPartialMatch()은 true
을 반환합니다.
부분 일치가 발견되면 캡처된 하위 문자열이 반환되지 않으며 전체 일치에 해당하는 (암시적) 캡처 그룹 0이 제목 문자열의 부분적으로 일치하는 하위 문자열을 캡처합니다.
부분 일치 항목을 요청해도 전체 일치 항목이 발견되면 전체 일치 항목으로 이어질 수 있으며, 이 경우 hasMatch()는 true
및 hasPartialMatch()는 false
을 반환합니다. QRegularExpressionMatch 가 부분 일치와 완전 일치를 모두 보고하는 경우는 절대 발생하지 않습니다.
부분 일치는 주로 사용자 입력의 실시간 유효성 검사와 증분/다중 세그먼트 일치라는 두 가지 시나리오에서 유용합니다.
사용자 입력 유효성 검사
사용자가 특정 형식의 날짜(예: "MMM dd, yyyy")를 입력한다고 가정해 보겠습니다. 다음과 같은 패턴으로 입력 유효성을 확인할 수 있습니다:
^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d\d?, \d\d\d\d$
(이 패턴은 유효하지 않은 날짜를 잡아내지는 못하지만 예제의 목적을 위해 그대로 유지하겠습니다).
사용자가 입력하는 동안 이 정규식으로 입력의 유효성을 검사하여 입력이 커밋되는 즉시 오류(예: 사용자가 잘못된 키를 입력한 경우)를 보고할 수 있도록 하고 싶습니다. 이를 위해서는 세 가지 경우를 구분해야 합니다:
- 입력이 정규식과 일치할 가능성이 없는 경우;
- 입력이 정규식과 일치하는 경우;
- 입력이 지금은 정규식과 일치하지 않지만 문자가 더 추가되면 일치하는 경우.
이 세 가지 경우는 QValidator ( QValidator::State 열거형 참조)의 가능한 상태를 정확히 나타냅니다.
특히 마지막 경우에는 정규식 엔진이 부분 일치를 보고하기를 원합니다. 즉, 제목 문자열에 대해 패턴을 성공적으로 일치시키고 있지만 제목의 끝부분이 발견되어 일치를 계속할 수 없는 경우입니다. 그러나 일치 알고리즘은 모든 가능성을 계속 시도하고 완전한(부분 일치가 아닌) 일치가 발견되면 이를 보고하고 입력 문자열을 완전히 유효한 것으로 받아들여야 한다는 점에 유의하세요.
이 동작은 PartialPreferCompleteMatch 일치 유형으로 구현됩니다. 예를 들어
QString pattern("^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d\\d?, \\d\\d\\d\\d$"); QRegularExpression re(pattern); QString input("Jan 21,"); QRegularExpressionMatch match = re.match(input, 0, QRegularExpression::PartialPreferCompleteMatch); bool hasMatch = match.hasMatch(); // false bool hasPartialMatch = match.hasPartialMatch(); // true
제목 문자열에 대해 동일한 정규식을 일치시켜도 완전히 일치하면 평소와 같이 보고됩니다:
QString input("Dec 8, 1985"); QRegularExpressionMatch match = re.match(input, 0, QRegularExpression::PartialPreferCompleteMatch); bool hasMatch = match.hasMatch(); // true bool hasPartialMatch = match.hasPartialMatch(); // false
다른 패턴의 또 다른 예로, 부분 일치보다 완전 일치를 선호하는 동작을 보여줍니다:
QRegularExpression re("abc\\w+X|def"); QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch); bool hasMatch = match.hasMatch(); // true bool hasPartialMatch = match.hasPartialMatch(); // false QString captured = match.captured(0); // captured == "def"
이 경우 하위 패턴 abc\\w+X
은 제목 문자열과 부분적으로 일치하지만, 하위 패턴 def
은 제목 문자열과 완전히 일치하므로 완전 일치가 보고됩니다.
일치시킬 때 부분적으로 일치하는 항목이 여러 개 발견되지만 완전히 일치하는 항목이 없는 경우 QRegularExpressionMatch 객체는 가장 먼저 발견된 항목을 보고합니다. 예를 들어
QRegularExpression re("abc\\w+X|defY"); QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch); bool hasMatch = match.hasMatch(); // false bool hasPartialMatch = match.hasPartialMatch(); // true QString captured = match.captured(0); // captured == "abcdef"
증분/다중 세그먼트 매칭
증분 일치는 부분 일치의 또 다른 사용 사례입니다. 큰 텍스트 내에서 정규식(즉, 정규식과 일치하는 하위 문자열)의 출현을 찾고 싶다고 가정해 봅시다. 이를 위해 큰 텍스트를 정규식 엔진에 작은 덩어리로 '공급'하고 싶습니다. 분명한 문제는 정규식과 일치하는 하위 문자열이 두 개 이상의 청크에 걸쳐 있는 경우 어떻게 되는가 하는 것입니다.
이 경우 정규식 엔진은 부분 일치로 보고해야 새 데이터를 추가하여 다시 일치시키고 (결국에는) 완전한 일치를 얻을 수 있습니다. 이는 정규식 엔진이 제목 문자열의 끝 부분에 다른 문자가 있다고 가정할 수 있음을 의미합니다. 이를 문자 그대로 받아들여서는 안 되며, 엔진은 제목의 마지막 문자 이후에는 절대로 접근을 시도하지 않습니다.
QRegularExpression은 PartialPreferFirstMatch 일치 유형을 사용할 때 이 동작을 구현합니다. 이 일치 유형은 부분 일치를 발견하는 즉시 보고하며 다른 일치 대안은 시도하지 않습니다(완전 일치로 이어질 수 있는 경우에도). 예를 들어
QRegularExpression re("abc|ab"); QRegularExpressionMatch match = re.match("ab", 0, QRegularExpression::PartialPreferFirstMatch); bool hasMatch = match.hasMatch(); // false bool hasPartialMatch = match.hasPartialMatch(); // true
이는 대체 연산자의 첫 번째 분기를 일치시킬 때 부분 일치 항목이 발견되어 두 번째 분기를 시도하지 않고 일치가 중지되기 때문에 발생합니다. 또 다른 예입니다:
QRegularExpression re("abc(def)?"); QRegularExpressionMatch match = re.match("abc", 0, QRegularExpression::PartialPreferFirstMatch); bool hasMatch = match.hasMatch(); // false bool hasPartialMatch = match.hasPartialMatch(); // true
이것은 정량화 연산자의 직관적이지 않은 동작을 보여줍니다. ?
은 욕심이 많기 때문에 엔진은 "abc"
과 일치시킨 후 먼저 일치를 계속하려고 시도하지만 일치 항목이 제목 문자열의 끝에 도달하여 부분 일치가 보고됩니다. 다음 예제에서는 이러한 현상이 더욱 놀랍습니다:
QRegularExpression re("(abc)*"); QRegularExpressionMatch match = re.match("abc", 0, QRegularExpression::PartialPreferFirstMatch); bool hasMatch = match.hasMatch(); // false bool hasPartialMatch = match.hasPartialMatch(); // true
엔진은 제목 문자열이 일치 항목을 찾고 있는 전체 텍스트의 하위 문자열일 것으로 예상한다는 점을 기억하면 이 동작을 쉽게 이해할 수 있습니다(즉, 엔진은 제목 문자열의 끝 부분에 다른 문자가 있다고 가정한다는 점을 앞서 설명한 바 있습니다).
*
한정자는 욕심이 많기 때문에 현재 제목 "abc"
뒤에 "abc"
이 있을 수 있으므로 전체 일치를 보고하는 것은 오류가 될 수 있습니다. 예를 들어 전체 텍스트가 "abcabcX"였을 수 있으므로 (전체 텍스트에서) 보고할 올바른 일치는 "abcabc"
이지만, 선행 "abc"
에만 일치하면 부분 일치를 얻는 대신 부분 일치를 얻게 됩니다.
오류 처리
패턴 문자열의 구문 오류로 인해 QRegularExpression 객체가 유효하지 않을 수 있습니다. 정규식이 유효하면 isValid() 함수는 참을 반환하고, 그렇지 않으면 거짓을 반환합니다:
QRegularExpression invalidRe("(unmatched|parenthesis"); bool isValid = invalidRe.isValid(); // false
errorString() 함수를 호출하여 특정 오류에 대한 자세한 정보를 얻을 수 있으며, patternErrorOffset() 함수는 패턴 문자열 내부의 오프셋을 반환합니다.
QRegularExpression invalidRe("(unmatched|parenthesis"); if (!invalidRe.isValid()) { QString errorString = invalidRe.errorString(); // errorString == "missing )" int errorOffset = invalidRe.patternErrorOffset(); // errorOffset == 22 // ... }
유효하지 않은 QRegularExpression으로 일치를 시도하면 반환된 QRegularExpressionMatch 개체도 유효하지 않습니다(즉, isValid() 함수는 false를 반환합니다). 글로벌 일치를 시도하는 경우에도 마찬가지입니다.
지원되지 않는 Perl 호환 정규식 기능
QRegularExpression은 Perl 호환 정규 표현식에서 사용할 수 있는 모든 기능을 지원하지는 않습니다. 가장 눈에 띄는 것은 캡처 그룹에 대한 중복된 이름이 지원되지 않으며, 이를 사용하면 정의되지 않은 동작이 발생할 수 있다는 사실입니다.
이는 향후 Qt 버전에서 변경될 수 있습니다.
QRegularExpression을 사용하는 코드 디버깅하기
QRegularExpression은 내부적으로 적시 컴파일러(JIT)를 사용하여 매칭 알고리즘의 실행을 최적화합니다. JIT는 자체 수정 코드를 광범위하게 사용하므로 Valgrind와 같은 디버깅 도구가 충돌할 수 있습니다. QRegularExpression(예: Valgrind의 --smc-check
명령줄 옵션)을 사용하여 프로그램을 디버깅하려면 자체 수정 코드에 대한 모든 검사를 활성화해야 합니다. 이러한 검사를 활성화하면 프로그램 실행 속도가 상당히 느려진다는 단점이 있습니다.
이를 방지하기 위해 디버그 모드에서 Qt를 컴파일하면 기본적으로 JIT가 비활성화됩니다. QT_ENABLE_REGEXP_JIT
환경 변수를 각각 0이 아닌 값 또는 0으로 설정하여 기본값을 재정의하고 (디버그 또는 릴리스 모드 모두에서) JIT 사용을 활성화 또는 비활성화할 수 있습니다.
QRegularExpressionMatch 및 QRegularExpressionMatchIterator 을참조하세요 .
멤버 유형 문서
열거형 QRegularExpression::MatchOption
플래그 QRegularExpression::MatchOptions
Constant | 값 | 설명 |
---|---|---|
QRegularExpression::NoMatchOption | 0x0000 | 일치 옵션이 설정되지 않았습니다. |
QRegularExpression::AnchoredMatchOption | AnchorAtOffsetMatchOption | 대신 AnchorAtOffsetMatchOption을 사용합니다. |
QRegularExpression::AnchorAtOffsetMatchOption | 0x0001 | 패턴 문자열에 해당 지점에서 일치 항목을 고정하는 메타문자가 포함되어 있지 않더라도 일치 항목은 match()에 전달된 오프셋에서 정확히 시작하도록 제한되어 성공할 수 있습니다. 이 옵션을 전달해도 일치 항목의 끝을 제목의 끝에 앵커링하지 않으므로 정규식을 완전히 앵커링하려면 anchoredPattern()를 사용하세요. 이 열거형 값은 Qt 6.0에 도입되었습니다. |
QRegularExpression::DontCheckSubjectStringMatchOption | 0x0002 | 일치를 시도하기 전에 제목 문자열의 UTF-16 유효성을 검사하지 않습니다. 유효하지 않은 문자열과 일치를 시도하면 프로그램이 충돌하거나 보안 문제가 발생할 수 있으므로 이 옵션은 매우 주의해서 사용하세요. 이 열거형 값은 Qt 5.4에 도입되었습니다. |
MatchOptions 유형은 QFlags<MatchOption>의 typedef입니다. MatchOption 값의 OR 조합을 저장합니다.
enum QRegularExpression::MatchType
MatchType 열거형은 제목 문자열에 대해 시도해야 하는 일치 유형을 정의합니다.
Constant | 값 | 설명 |
---|---|---|
QRegularExpression::NormalMatch | 0 | 일반 일치가 수행됩니다. |
QRegularExpression::PartialPreferCompleteMatch | 1 | 패턴 문자열이 제목 문자열과 부분적으로 일치합니다. 부분적으로 일치하는 항목이 발견되면 기록되고 다른 일치하는 대안이 평소와 같이 시도됩니다. 그런 다음 완전 일치가 발견되면 부분 일치보다 우선시되며, 이 경우 완전 일치만 보고됩니다. 대신 완전히 일치하는 항목이 발견되지 않고 부분적으로만 일치하는 항목이 발견되면 부분적으로 일치하는 항목이 보고됩니다. |
QRegularExpression::PartialPreferFirstMatch | 2 | 패턴 문자열이 제목 문자열과 부분적으로 일치합니다. 부분 일치가 발견되면 일치가 중지되고 부분 일치가 보고됩니다. 이 경우 다른 일치 대안(잠재적으로 완전한 일치로 이어질 수 있는)은 시도되지 않습니다. 또한 이 일치 유형은 제목 문자열이 더 큰 텍스트의 하위 문자열일 뿐이고 (이 텍스트에서) 제목 문자열의 끝 부분에 다른 문자가 있다고 가정합니다. 이로 인해 예상치 못한 결과가 나올 수 있으므로 자세한 내용은 partial matching 섹션의 토론을 참조하세요. |
QRegularExpression::NoMatch | 3 | 매칭이 수행되지 않습니다. 이 값은 기본적으로 구성된 QRegularExpressionMatch 또는 QRegularExpressionMatchIterator 에 의해 일치 유형으로 반환됩니다. 이 일치 유형을 사용하면 일치가 전혀 이루어지지 않으므로 사용자에게 그다지 유용하지 않습니다. 이 열거형 값은 Qt 5.1에 도입되었습니다. |
enum QRegularExpression::PatternOption
플래그 QRegularExpression::PatternOptions
패턴 옵션 열거형은 패턴 문자열이 해석되는 방식, 즉 패턴이 주제 문자열과 일치하는 방식에 대한 수정자를 정의합니다.
Constant | 값 | 설명 |
---|---|---|
QRegularExpression::NoPatternOption | 0x0000 | 패턴 옵션이 설정되지 않았습니다. |
QRegularExpression::CaseInsensitiveOption | 0x0001 | 패턴은 대소문자를 구분하지 않는 방식으로 제목 문자열과 일치해야 합니다. 이 옵션은 Perl 정규 표현식의 /i 수정자에 해당합니다. |
QRegularExpression::DotMatchesEverythingOption | 0x0002 | 패턴 문자열의 점 메타문자(. )는 개행선을 포함하여 제목 문자열의 모든 문자와 일치할 수 있습니다(일반적으로 점은 개행선과 일치하지 않음). 이 옵션은 Perl 정규 표현식의 /s 수정자에 해당합니다. |
QRegularExpression::MultilineOption | 0x0004 | 패턴 문자열의 캐럿(^ )과 달러($ ) 메타문자는 각각 제목 문자열의 개행 바로 뒤와 바로 앞, 제목 문자열의 맨 처음과 맨 끝에서 일치할 수 있습니다. 이 옵션은 Perl 정규 표현식의 /m 수정자에 해당합니다. |
QRegularExpression::ExtendedPatternSyntaxOption | 0x0008 | 패턴 문자열에서 이스케이프되지 않고 문자 클래스 외부에 있는 공백은 무시됩니다. 또한 문자 클래스 외부에 이스케이프되지 않은 샤프(#)가 있으면 첫 번째 줄 바꿈(포함)까지 다음 문자가 모두 무시됩니다. 이 옵션은 패턴 문자열의 가독성을 높이고 정규식 안에 주석을 넣는 데 사용할 수 있으며, C++ 코드에서는 항상 문자열 리터럴 규칙을 사용하여 패턴 문자열 외부에 주석을 넣을 수 있으므로 패턴 문자열이 파일에서 로드되거나 사용자가 작성한 경우 특히 유용합니다. 이 옵션은 Perl 정규 표현식의 /x 수정자에 해당합니다. |
QRegularExpression::InvertedGreedinessOption | 0x0010 | 한정자의 욕심은 반전되어 있습니다: * , + , ? , {m,n} , 등은 게으른 버전(*? , +? , ?? , {m,n}? , 등)이 탐욕스러워집니다. Perl 정규 표현식에는 이 옵션에 해당하는 옵션이 없습니다. |
QRegularExpression::DontCaptureOption | 0x0020 | 명명되지 않은 캡처 그룹은 하위 문자열을 캡처하지 않으며, 명명된 캡처 그룹과 전체 일치에 해당하는 암시적 캡처 그룹 번호 0은 여전히 의도한 대로 작동합니다. Perl 정규식에는 이 옵션에 해당하는 옵션이 없습니다. |
QRegularExpression::UseUnicodePropertiesOption | 0x0040 | \w , \d , 등, 문자 클래스의 의미와 해당 문자 클래스(\W , \D , 등)의 의미가 ASCII 문자만 일치하는 것에서 해당 유니코드 속성이 있는 모든 문자와 일치하는 것으로 변경됩니다. 예를 들어 \d 은 유니코드 Nd(십진수) 속성을 가진 모든 문자와 일치하도록 변경되고, \w 은 유니코드 L(문자) 또는 N(숫자) 속성을 가진 모든 문자와 밑줄을 포함한 모든 문자와 일치하도록 변경됩니다. 이 옵션은 Perl 정규 표현식의 /u 수정자에 해당합니다. |
패턴옵션 유형은 QFlags<패턴옵션>에 대한 typedef입니다. 이 유형은 PatternOption 값의 OR 조합을 저장합니다.
[since 6.0]
열거형 QRegularExpression::와일드카드변환옵션
플래그 QRegularExpression::와일드카드변환옵션
와일드카드 글로브 패턴이 정규식 패턴으로 변환되는 방식에 대한 수정자를 정의하는 와일드카드ConversionOption 열거형입니다.
Constant | 값 | 설명 |
---|---|---|
QRegularExpression::DefaultWildcardConversion | 0x0 | 변환 옵션이 설정되지 않았습니다. |
QRegularExpression::UnanchoredWildcardConversion | 0x1 | 변환은 패턴을 고정하지 않습니다. 이렇게 하면 와일드카드 표현식의 부분 문자열 일치가 가능합니다. |
QRegularExpression::NonPathWildcardConversion (since Qt 6.6) | 0x2 | 변환은 패턴을 파일 경로 글로빙으로 해석하지 않습니다. |
이 열거형은 Qt 6.0에 도입되었습니다.
와일드카드 변환 옵션 유형은 QFlags<와일드카드 변환 옵션>에 대한 typedef입니다. 이 유형은 WildcardConversionOption 값의 OR 조합을 저장합니다.
멤버 함수 문서
QRegularExpression::QRegularExpression()
빈 패턴과 패턴 옵션이 없는 QRegularExpression 객체를 구축합니다.
setPattern() 및 setPatternOptions()도 참조하세요 .
[explicit]
QRegularExpression::QRegularExpression(const QString &pattern, QRegularExpression::PatternOptions options = NoPatternOption)
주어진 pattern 을 패턴으로, options 을 패턴 옵션으로 사용하여 QRegularExpression 객체를 구축합니다.
setPattern() 및 setPatternOptions()도 참조하세요 .
[noexcept]
QRegularExpression::QRegularExpression(const QRegularExpression &re)
의 복사본으로 QRegularExpression 객체를 구축합니다 re.
operator=()도 참조하세요 .
[noexcept, since 6.1]
QRegularExpression::QRegularExpression(QRegularExpression &&re)
에서 이동하여 QRegularExpression 객체를 생성합니다. re.
QRegularExpression에서 이동한 것은 소멸하거나 할당할 수만 있다는 점에 유의하세요. 소멸자나 할당 연산자 중 하나가 아닌 다른 함수를 호출하는 효과는 정의되지 않았습니다.
이 함수는 Qt 6.1에 도입되었습니다.
operator=()도 참조하십시오 .
[noexcept]
QRegularExpression::~QRegularExpression()
QRegularExpression 객체를 삭제합니다.
[static]
QString QRegularExpression::anchoredPattern(QStringView expression)
정확한 매칭에 사용할 \A
및 \z
앵커 사이에 래핑된 expression 을 반환합니다.
[static]
QString QRegularExpression::anchoredPattern(const QString &expression)
과부하가 걸린 기능입니다.
int QRegularExpression::captureCount() const
패턴 문자열 안에 있는 캡처 그룹 수를 반환하거나 정규식이 유효하지 않은 경우 -1을 반환합니다.
참고: 암시적 캡처 그룹 0은 반환된 숫자에 포함되지 않습니다.
isValid()도 참조하세요 .
QString QRegularExpression::errorString() const
정규식의 유효성을 확인할 때 발견된 오류에 대한 텍스트 설명을 반환하거나 오류가 발견되지 않은 경우 "오류 없음"을 반환합니다.
isValid() 및 patternErrorOffset()도 참조하세요 .
[static]
QString QRegularExpression::escape(QStringView str)
정규식 패턴 문자열로 사용될 때 더 이상 특별한 의미를 갖지 않도록 str 의 모든 문자를 이스케이프 처리하고 이스케이프 처리된 문자열을 반환합니다. 예를 들어
QString escaped = QRegularExpression::escape("a(x) = f(x) + g(x)"); // escaped == "a\\(x\\)\\ \\=\\ f\\(x\\)\\ \\+\\ g\\(x\\)"
이 함수는 임의의 문자열에서 패턴을 만들 때 매우 편리합니다:
QString pattern = "(" + QRegularExpression::escape(name) + "|" + QRegularExpression::escape(nickname) + ")"; QRegularExpression re(pattern);
참고: 이 함수는 Perl의 쿼테메타 알고리즘을 구현하여 [A-Z]
, [a-z]
및 [0-9]
범위의 문자와 밑줄(_
) 문자를 제외한 str 의 모든 문자를 백슬래시로 이스케이프 처리합니다. Perl과의 유일한 차이점은 str 내의 리터럴 NUL은 "\\\0"
(백슬래시 + NUL
) 대신 "\\0"
(백슬래시 + '0'
) 시퀀스로 이스케이프된다는 점입니다.
[static]
QString QRegularExpression::escape(const QString &str)
과부하가 걸린 기능입니다.
[static, since 6.0]
QRegularExpression QRegularExpression::fromWildcard(QStringView pattern, Qt::CaseSensitivity cs = Qt::CaseInsensitive, QRegularExpression::WildcardConversionOptions options = DefaultWildcardConversion)
글로브 패턴의 정규식 pattern 을 반환합니다. cs 이 Qt::CaseSensitive 인 경우 정규식은 대소문자를 구분하며 options 에 따라 변환됩니다.
에 해당
auto reOptions = cs == Qt::CaseSensitive ? QRegularExpression::NoPatternOption : QRegularExpression::CaseInsensitiveOption; return QRegularExpression(wildcardToRegularExpression(str, options), reOptions);
이 함수는 Qt 6.0에 도입되었습니다.
QRegularExpressionMatchIterator QRegularExpression::globalMatch(const QString &subject, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const
제목 내부의 offset 위치에서 시작하여 matchType 유형의 일치를 사용하고 주어진 matchOptions 을 존중하여 주어진 subject 문자열에 대해 정규식의 전역 일치를 수행하려고 시도합니다.
반환된 QRegularExpressionMatchIterator 은 첫 번째 일치 결과(있는 경우) 앞에 위치합니다.
QRegularExpressionMatchIterator 및 global matching도 참조하세요 .
[since 6.5]
QRegularExpressionMatchIterator QRegularExpression::globalMatchView(QStringView subjectView, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const
이 함수는 오버로드된 함수입니다.
제목 내부의 offset 위치에서 시작하여 matchType 유형의 일치를 사용하고 지정된 matchOptions 을 준수하여 주어진 subjectView 문자열 보기에 대해 정규식의 전역 일치를 수행하려고 시도합니다.
반환된 QRegularExpressionMatchIterator 은 첫 번째 일치 결과(있는 경우) 앞에 위치합니다.
참고: subjectView 에서 참조하는 데이터는 이를 사용하는 QRegularExpressionMatchIterator 또는 QRegularExpressionMatch 객체가 있는 한 유효해야 합니다.
이 함수는 Qt 6.5에 도입되었습니다.
QRegularExpressionMatchIterator 및 global matching 을참조하십시오 .
bool QRegularExpression::isValid() const
정규식이 유효한 정규식인 경우(즉, 구문 오류 등이 포함되지 않은 경우) true
을 반환하고, 그렇지 않으면 false를 반환합니다. 오류에 대한 텍스트 설명을 얻으려면 errorString()를 사용합니다.
errorString() 및 patternErrorOffset()도 참조하세요 .
QRegularExpressionMatch QRegularExpression::match(const QString &subject, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const
주어진 subject 문자열에 대해 정규식을 일치시키려고 시도하며, 제목 내부의 offset 위치에서 시작하여 matchType 형식의 일치를 사용하고 주어진 matchOptions 을 존중합니다.
반환된 QRegularExpressionMatch 객체에는 일치 결과가 포함됩니다.
QRegularExpressionMatch 및 normal matching도 참조하세요 .
[since 6.5]
QRegularExpressionMatch QRegularExpression::matchView(QStringView subjectView, qsizetype offset = 0, QRegularExpression::MatchType matchType = NormalMatch, QRegularExpression::MatchOptions matchOptions = NoMatchOption) const
이 함수는 오버로드된 함수입니다.
주어진 subjectView 문자열 보기에 대해 정규식을 일치시키려고 시도하며, 제목 내부의 offset 위치에서 시작하여 matchType 형식의 일치를 사용하고 주어진 matchOptions 을 준수합니다.
반환된 QRegularExpressionMatch 객체에는 일치 결과가 포함됩니다.
참고: subjectView 에서 참조하는 데이터는 이를 사용하는 QRegularExpressionMatch 객체가 있는 한 유효해야 합니다.
이 함수는 Qt 6.5에 도입되었습니다.
QRegularExpressionMatch 와 normal matching도 참조하십시오 .
QStringList QRegularExpression::namedCaptureGroups() const
패턴 문자열에 명명된 캡처 그룹의 이름이 포함된 captureCount() + 1 요소의 목록을 반환합니다. 목록은 이름이 있는 경우 i
위치에 있는 목록의 요소가 i
-번째 캡처 그룹의 이름이 되도록 정렬되며, 캡처 그룹에 이름이 없는 경우 빈 문자열이 되도록 정렬됩니다.
예를 들어 정규식
(?<day>\d\d)-(?<month>\d\d)-(?<year>\d\d\d\d) (\w+) (?<name>\w+)
정규식이 주어지면 namedCaptureGroups()는 다음 목록을 반환합니다:
("", "day", "month", "year", "", "name")
이는 캡처 그룹 #0(전체 일치에 해당)에 이름이 없는 경우, 캡처 그룹 #1에 이름이 '일', 캡처 그룹 #2에 이름이 '월' 등에 해당합니다.
정규식이 유효하지 않으면 빈 목록을 반환합니다.
isValid(), QRegularExpressionMatch::captured() 및 QString::isEmpty()도 참조하세요 .
void QRegularExpression::optimize() const
최적화를 위해 (JIT가 활성화된 경우) JIT 컴파일을 포함하여 패턴을 즉시 컴파일합니다.
isValid() 및 Debugging Code that Uses QRegularExpression 을참조하세요 .
QString QRegularExpression::pattern() const
정규식의 패턴 문자열을 반환합니다.
setPattern() 및 patternOptions()도 참조하세요 .
qsizetype QRegularExpression::patternErrorOffset() const
정규식의 유효성을 검사할 때 오류가 발견된 패턴 문자열 내부의 오프셋을 반환합니다. 오류가 발견되지 않으면 -1이 반환됩니다.
pattern(), isValid() 및 errorString()도 참조하세요 .
QRegularExpression::PatternOptions QRegularExpression::patternOptions() const
정규식에 대한 패턴 옵션을 반환합니다.
setPatternOptions() 및 pattern()도 참조하세요 .
void QRegularExpression::setPattern(const QString &pattern)
정규식의 패턴 문자열을 pattern 로 설정합니다. 패턴 옵션은 변경되지 않습니다.
pattern() 및 setPatternOptions()도 참조하세요 .
void QRegularExpression::setPatternOptions(QRegularExpression::PatternOptions options)
주어진 options 을 정규식의 패턴 옵션으로 설정합니다. 패턴 문자열은 변경되지 않습니다.
patternOptions() 및 setPattern()도 참조하세요 .
[noexcept]
void QRegularExpression::swap(QRegularExpression &other)
이 정규식을 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.
[static]
QString QRegularExpression::wildcardToRegularExpression(QStringView pattern, QRegularExpression::WildcardConversionOptions options = DefaultWildcardConversion)
주어진 글로브의 정규식 표현을 반환합니다 pattern.
파일 경로 글로브를 대상으로 하는 변환과 보다 일반적인 변환 두 가지가 가능합니다.
기본적으로 변환은 파일 경로 글로빙을 대상으로 하며, 이는 특히 경로 구분 기호가 특별한 대우를 받는다는 것을 의미합니다. 이는 단순히 "*"에서 ".*"로의 기본적인 번역이 아니라는 것을 의미합니다.
QString wildcard = QRegularExpression::wildcardToRegularExpression("*.jpeg"); // Will match files with names like: // foo.jpeg // f_o_o.jpeg // föö.jpeg
보다 일반적인 글로빙 변환은 options 변환에 NonPathWildcardConversion
을 전달하여 사용할 수 있습니다.
이 구현은 글로브 패턴에 대한 와일드카드의 정의를 그대로 따릅니다:
c | 아래에 언급된 문자를 제외한 모든 문자는 그 자체를 나타냅니다. 따라서 c는 문자 c와 일치합니다. |
? | 경로 구분 기호(파일 경로 글로브가 선택된 경우)를 제외한 모든 단일 문자와 일치합니다. 전체 정규식의 b{.}와 동일합니다. |
* | 경로 구분자를 제외한 모든 문자를 0개 이상 일치시킵니다(파일 경로 글로빙이 선택된 경우). 전체 정규식의 .*와 동일합니다. |
[abc] | 괄호 안에 지정된 한 문자와 일치합니다. |
[a-c] | 괄호 안에 주어진 범위에서 한 문자를 일치시킵니다. |
[!abc] | 괄호 안에 지정되지 않은 한 문자와 일치합니다. 전체 정규식의 [^abc] 와 동일합니다. |
[!a-c] | 괄호 안에 주어진 범위에 속하지 않는 한 문자를 일치시킵니다. 전체 정규식의 [^a-c] 와 동일합니다. |
참고: 역사적인 이유로 백슬래시(\) 문자는 이 문맥에서 이스케이프 문자가 아닙니다. 특수 문자 중 하나를 일치시키려면 대괄호 안에 넣어야 합니다(예: [?]
).
구현에 대한 자세한 내용은 다음에서 확인할 수 있습니다:
- 위키백과 글로브 문서
man 7 glob
기본적으로 반환된 정규식은 완전히 앵커링됩니다. 즉, 결과에서 anchoredPattern()를 다시 호출할 필요가 없습니다. 앵커링되지 않은 정규식을 얻으려면 변환 options 에 UnanchoredWildcardConversion 을 전달하세요.
escape()도 참조하세요 .
[static]
QString QRegularExpression::wildcardToRegularExpression(const QString &pattern, QRegularExpression::WildcardConversionOptions options = DefaultWildcardConversion)
과부하가 걸린 기능입니다.
[noexcept]
QRegularExpression &QRegularExpression::operator=(QRegularExpression &&re)
이동 - 정규식 re 을 이 개체에 할당하고 결과에 대한 참조를 반환합니다. 패턴과 패턴 옵션이 모두 복사됩니다.
QRegularExpression 에서 이동한 개체는 소멸하거나 할당할 수만 있습니다. 소멸자 또는 할당 연산자 중 하나가 아닌 다른 함수를 호출하는 효과는 정의되지 않았습니다.
[noexcept]
QRegularExpression &QRegularExpression::operator=(const QRegularExpression &re)
이 객체에 정규식 re 을 할당하고 복사본에 대한 참조를 반환합니다. 패턴과 패턴 옵션이 모두 복사됩니다.
관련 비회원
[noexcept]
size_t qHash(const QRegularExpression &key, size_t seed = 0)
seed 을 사용하여 key 에 대한 해시값을 반환합니다.
[noexcept]
bool operator!=(const QRegularExpression &lhs, const QRegularExpression &rhs)
lhs 정규식이 rhs 과 다르면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
operator==()도 참조하세요 .
QDataStream &operator<<(QDataStream &out, const QRegularExpression &re)
정규식 re 을 out 스트림에 씁니다.
Qt 데이터 유형 직렬화도참조하십시오 .
QDebug operator<<(QDebug debug, QRegularExpression::PatternOptions patternOptions)
디버깅을 위해 디버그 객체 debug 에 패턴 옵션 patternOptions 을 씁니다.
디버깅 기법도참조하세요 .
QDebug operator<<(QDebug debug, const QRegularExpression &re)
디버깅을 위해 re 정규식을 디버그 객체 debug 에 씁니다.
디버깅 기법도참조하세요 .
[noexcept]
bool operator==(const QRegularExpression &lhs, const QRegularExpression &rhs)
lhs 정규식이 rhs 와 같으면 true
를 반환하고, 그렇지 않으면 false를 반환합니다. 두 개의 QRegularExpression 객체가 동일한 패턴 문자열과 동일한 패턴 옵션을 가지고 있으면 동일합니다.
operator!=()도 참조하세요 .
QDataStream &operator>>(QDataStream &in, QRegularExpression &re)
스트림 in 에서 re 로 정규식을 읽습니다.
Qt 데이터 유형 직렬화도참조하십시오 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.