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


316

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

G[a-b].*

정규 표현식을 일치시키기 전에 대문자와 소문자를 모두 포함 시키거나 대문자로 변환하십시오
Chetter Hummin

2
G [a-bA-B]. *는이 일반적인 경우에 명백 할 것입니다. 대소 문자 구분은 플랫폼에 따라 다르며 플랫폼을 제공하지 않습니다.
Joachim Isaksson

16
Java를 사용하는 경우 Pattern 클래스로이를 지정할 수 있습니다 Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);.
james.garriss

더 많은 Java 옵션은 여기에 있습니다 : blogs.oracle.com/xuemingshen/entry/…
james.garriss

에 대한 참고 grep보내고 그것은 단순히 추가하는 것입니다 -i수정. 예 : grep -rni regular_expression이 'regular_expression' 'r'을 검색하기 위해 대소 문자를 구분하여 결과에 줄 'n'을 표시합니다.
Gabriel Staples

답변:


444

전체 정규 표현식이 대소 문자를 무시하기 를 원한다고 가정하면 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 이외의 유니 코드 문자를 다루는 경우 정규식 엔진이 올바르게 지원하는지 확인하십시오.


훌륭한! 작품 : perl -pe 's / ^ utf-8 \? B \?. * $ // gi'Cancer.1631, 일치 / 바꾸기 문자열 "UTF-8? B?" 파일 Cancer.1631에서. 대소 문자가 일치하지 않아 perl -pe 's / ^ utf-8 \? B \?. * $ // g'Cancer.1631이 실패합니다.
빅토리아 스튜어트

이 게시물이 그러한 구체적인 예가 아니라면 훨씬 명확합니다. ".txt"및 ".TXT"와 같은 다른 단어의 대소 문자를 무시하려면 어떻게해야합니까? 이 답변을 보면 여전히 어떻게 할 수 있는지 잘 모르겠습니다.
Kyle Bridenstine 2016 년

어떤 이유로 든 게시 한 정규식이 find확장 정규식 에서 작동하지 않습니다 . 예를 들어 find . \( -type d -regextype posix-extended -regex '/./[a-c][^.]*/i' \)폴더가 표시되지 않습니다. find . \( -type d -regextype posix-extended -regex './[a-c][^.]*' \)수정자가없는 유사한 정규식 은 올바른 폴더를 표시합니다. 왜 그런지 알아?
alpha_989

여기에서 나는 모든 폴더 문자로 시작 찾기 위해 노력하고있다 [a-c].. 단지 .. 좀 더 조작을 수행 할 현재 폴더에
alpha_989

솔직히 나는 옵션 2를 일반의 모든 정규식 엔진과 함께 작동하기 때문에 답변의 주요 부분에 옵션 2를 넣었습니다.
Puterdo Borato

154

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

(?i)G[a-b].

변형 :

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

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

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


TortoiseHg의 검색 정규식 엔진에 대한 수정 자 형식입니다.
mwolfe02

리눅스 쉘 (예 : "-i"스위치를 사용하지 않는 egrep)에서 이것이 일반적으로 어떻게 달성 될 수 있는지 말씀해 주시겠습니까?
Krishna Gupta

1
무엇을 (?i)하고 어떻게 끝내는지를 설명하는 (?-i)것이 정말 도움이 될 것입니다. 답이이 미묘한 세부 사항을 설명하는 것처럼 거의 1이 아닌 1 위 질문보다 1/3 많은 표를 얻습니다.
Gabriel Staples

55

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

(?i)(abc)

1
Android Studio logcat과 완벽하게 호환
Joe

python에서도 작동
conner.xyz

47

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


15

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

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

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

1
이 게시물이 다운 보트 된 이유를 누군가가 설명해 줄 수 있습니까? 수용 된 솔루션은 특정 코드를 사용하고 완전성을 위해 언어 C ++의 표준 라이브러리에 대한 솔루션을 추가하고 싶었습니다. 내 의견으로는 더 일반적인 질문에 부가 가치를 창출했습니다.
Frankenstein

5

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

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


2

씨#

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

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


1

[gG] [aAbB]. * 패턴이 너무 복잡하거나 길지 않은 경우 아마도 간단한 해결책입니다.


주어진 질문에 왜이 답변이 잘못된 지 알고 싶습니까?
alpha_989

당신은 당신의 대답에 "너무 복잡하거나 길지 않다"
reggaeguitar

이것은 실제로 내 경우에 효과가 있었던 유일한 솔루션입니다. 또한 모든 곳에서 작동하는 가장 일반적인 솔루션처럼 보입니다. 다른 모든 답변은 특정 정규식 구현에 대해 매우 구체적인 것으로 보입니다.
Puterdo Borato

1

이미 받아 들여진 답변에 추가 :

그렙 사용법 :

에 대한 참고 grep보내고 그것은 단순히 추가하는 것입니다 -i수정. 전의:grep -rni regular_expression 이 'regular_expression' 'r'을 검색하기 위해 대소 문자를 구분하여 결과에 줄 'n'을 표시합니다.

또한 정규식을 확인하는 데 유용한 도구가 있습니다. https://regex101.com/

예 :이 이미지의 표현 및 설명을 참조하십시오.

여기에 이미지 설명을 입력하십시오

참고 문헌 :


0

자바에서 Regex생성자는

Regex(String pattern, RegexOption option)

따라서 사례를 무시하려면

option = RegexOption.IGNORE_CASE

0

찾기 / 바꾸기를 사용하여 Visual Studio 및 Visual Studio Code에서 Regex를 연습 할 수 있습니다.

대소 문자가 포함 된 정규 표현식에 대해 대소 문자 구분 및 정규식을 모두 선택해야합니다. 다른 [AZ]는 작동하지 않습니다. 여기에 이미지 설명을 입력하십시오.

Visual Studio 2019 커뮤니티


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.