[regex] 정규식 : 대소 문자 구분 무시

다음 정규 표현식이 대소 문자 구분을 무시하도록하려면 어떻게해야합니까? 모든 올바른 문자와 일치해야하지만 소문자인지 대문자인지는 무시하십시오.

G[a-b].*



답변

전체 정규 표현식이 대소 문자를 무시하기 를 원한다고 가정하면 i플래그를 찾아야합니다 . 거의 모든 정규식 엔진이이를 지원합니다.

/G[a-b].*/i

string.match("G[a-b].*", "i")

언어 / 플랫폼 / 도구 설명서를 확인하여 일치 모드를 지정하는 방법을 찾으십시오.

정규식의 일부만 대소 문자를 구분하지 않으려면 (원래 답변으로 가정) 두 가지 옵션이 있습니다.

  1. (?i)및 [선택적] (?-i)모드 수정자를 사용하십시오 .

    (?i)G[a-b](?-i).*
  2. 모든 변형 (소문자와 대문자)을 정규식에 넣으십시오-모드 수정자가 지원되지 않는 경우에 유용합니다.

    [gG][a-bA-B].*

마지막 참고 사항 : ASCII 이외의 유니 코드 문자를 다루는 경우 정규식 엔진이 올바르게 지원하는지 확인하십시오.


답변

구현에 따라 다르지만 사용하겠습니다

(?i)G[a-b].

변형 :

(?i) case-insensitive mode ON
(?-i) case-insensitive mode OFF

최신 정규식 맛을 사용하면 정규식의 일부에만 한정자를 적용 할 수 있습니다. 정규식 중간에 수정 자 (? im)를 삽입하면 수정자는 수정 자의 오른쪽에있는 정규식 부분에만 적용됩니다. 이 특징을 사용하면 빼기 기호 (? -i)를 앞에 붙여서 모드를 끌 수 있습니다.

https://www.regular-expressions.info/modifiers.html 페이지에서 설명합니다.


답변

대소 문자 구분을 무시하고 ‘abc’를 확인하는 정규식

(?i)(abc)


답변

i플래그는 일반적으로 소문자 구분을 위해 사용됩니다. 여기에 언어를 제공하지 않지만 아마도 /G[ab].*/i또는 같은 언어 일 것입니다 /(?i)G[ab].*/.


답변

완벽을 기하기 위해 유니 코드를 사용하여 C ++의 정규 표현식에 대한 솔루션을 추가하고 싶었습니다.

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);

if (std::tr1::regex_match(szString, pattern))
{
...
}


답변

이 비슷한 게시물 ( AWK의 경우 무시 ) 에서 알 수 있듯이 이전 버전의 awk (예 : 바닐라 Mac OS X)에서을 사용해야 할 수도 있습니다 'tolower($0) ~ /pattern/'.

IGNORECASE(?i)또는 /pattern/i중 오류가 발생하거나 모든 행에 대해 true를 반환합니다.


답변

씨#

using System.Text.RegularExpressions;
...
Regex.Match(
    input: "Check This String",
    pattern: "Regex Pattern",
    options: RegexOptions.IgnoreCase)

구체적으로 : 옵션 : RegexOptions.IgnoreCase