⊗pyPmREESCh 36 of 129 menu

Python 정규식에서 특수 문자 이스케이프

특수 문자가 그 자체를 나타내도록 만들어야 한다고 가정해 봅시다. 이를 위해 백슬래시를 사용하여 이스케이프해야 합니다. 예제를 통해 살펴보겠습니다.

예제

다음 예제에서 정규식 작성자는 검색 패턴이 다음과 같기를 원했습니다: 문자 'a', 그 다음 플러스 '+', 그 다음 문자 'x'. 그러나 코드 작성자는 기호 '+'를 이스케이프하지 않았기 때문에 실제 검색 패턴은 다음과 같습니다: 문자 'a'가 한 번 이상 나온 후, 문자 'x':

txt = 'a+x ax aax aaax' res = re.sub('a+x', '!', txt) print(res)

코드 실행 결과:

'a+x ! ! !'

예제

이제 작성자가 플러스를 백슬래시로 이스케이프했습니다. 이제 검색 패턴은 원하는 대로 보입니다: 문자 'a', 그 다음 플러스 '+', 그 다음 문자 'x':

txt = 'a+x ax aax aaax' res = re.sub('a\+x', '!', txt) print(res)

코드 실행 결과:

'! ax aax aaax'

예제

이 예제에서 패턴은 다음과 같습니다: 문자 'a', 그 다음 점 '.', 그 다음 문자 'x':

txt = 'a.x abx azx' res = re.sub('a\.x', '!', txt) print(res)

코드 실행 결과:

'! abx azx'

예제

다음 예제에서 작성자는 슬래시를 이스케이프하는 것을 잊었고, 이스케이프되지 않은 점은 어떤 문자든 나타낼 수 있기 때문에 정규식은 모든 부분 문자열과 일치하게 되었습니다:

txt = 'a.x abx azx' res = re.sub('a.x', '!', txt) print(res)

코드 실행 결과:

'! ! !'

참고

점이 그 자체를 나타내야 할 때 역슬래시를 잊어버리면 - 이를 알아차리지 못할 수도 있습니다:

res = re.sub('a.x', '!', 'a.x') print(res) # '!'를 반환하며, 우리가 원했던 대로입니다.

시각적으로는 올바르게 작동합니다 (점이 모든 문자를 나타낼 수 있으며, 일반 점 '.'도 포함하기 때문입니다). 하지만 대체가 발생하는 문자열을 변경하면 우리의 실수를 보게 될 것입니다:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # '! ! !'를 반환하지만, '! abx azx'가 예상됩니다.

특수 문자와 일반 문자 목록

일반 문자를 이스케이프해도 아무 일도 일어나지 않습니다 - 여전히 그 자체를 나타냅니다. 예외는 숫자이며, 숫자는 이스케이프할 수 없습니다.

종종 특정 문자가 특수 문자인지 아닌지 의심스러울 때가 있습니다. 어떤 사람들은 의심스러운 모든 문자를 무차별적으로 이스케이프하기도 합니다. 그러나 이는 좋지 않은 습관입니다 (정규식을 백슬래시로 지저분하게 만듭니다).

특수 문자: $ ^ . * + ? \ / {} [] () |

특수 문자가 아님: @ : , ' " - _ = < > % # ~ `& !

실습 문제

다음 문자열이 주어졌습니다:

txt = 'a.a aba aea'

문자열 'a.a'를 찾고 나머지는 찾지 않는 정규식을 작성하세요.

다음 문자열이 주어졌습니다:

txt = '2+3 223 2223'

문자열 '2+3'를 찾고 나머지는 찾지 않는 정규식을 작성하세요.

다음 문자열이 주어졌습니다:

txt = '23 2+3 2++3 2+++3 345 567'

문자열 '2+3', '2++3', '2+++3'를 찾고 나머지는 찾지 않는 정규식을 작성하세요 (+는 임의의 개수일 수 있습니다).

다음 문자열이 주어졌습니다:

txt = '23 2+3 2++3 2+++3 445 677'

문자열 '23', '2+3', '2++3', '2+++3'를 찾고 나머지는 찾지 않는 정규식을 작성하세요.

다음 문자열이 주어졌습니다:

txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'

문자열 '*q+', '*qq+', '*qqq+'를 찾고 나머지는 찾지 않는 정규식을 작성하세요.

다음 문자열이 주어졌습니다:

txt = '[abc] {abc} abc (abc) [abc]'

대괄호 안의 문자열을 찾아 '!'로 바꾸는 정규식을 작성하세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부