[python] 문자열이 패턴과 일치하는지 확인

문자열이이 패턴과 일치하는지 어떻게 확인합니까?

대문자, 숫자, 대문자, 숫자 …

예를 들면 다음과 같습니다.

A1B2
B10L1
C1N200J1

이것들은 그렇지 않습니다 ( ‘^’는 문제를 지적합니다)

a1B2
^
A10B
   ^
AB400
^



답변

import re
pattern = re.compile("^([A-Z][0-9]+)+$")
pattern.match(string)

편집 : 주석에서 언급했듯이 match문자열의 시작 부분에서만 일치하는 항목 만 확인하고 문자열의 re.search()어느 곳에서나 패턴과 일치합니다. ( https://docs.python.org/library/re.html#search-vs-match 참조 )


답변

짧막 한 농담: re.match(r"pattern", string) # No need to compile

import re
>>> if re.match(r"hello[0-9]+", 'hello1'):
...     print('Yes')
...
Yes

bool필요에 따라 평가할 수 있습니다

>>> bool(re.match(r"hello[0-9]+", 'hello1'))
True


답변

다음을 시도하십시오 :

import re

name = ["A1B1", "djdd", "B2C4", "C2H2", "jdoi","1A4V"]

# Match names.
for element in name:
     m = re.match("(^[A-Z]\d[A-Z]\d)", element)
     if m:
        print(m.groups())


답변

import re
import sys

prog = re.compile('([A-Z]\d+)+')

while True:
  line = sys.stdin.readline()
  if not line: break

  if prog.match(line):
    print 'matched'
  else:
    print 'not matched'


답변

정규식은 이것을 쉽게 만듭니다 …

[A-Z] A와 Z 사이의 정확히 하나의 문자와 일치합니다

\d+ 하나 이상의 숫자와 일치합니다

() 물건을 그룹화 (그리고 물건을 반환하지만 지금은 그룹화를 생각하십시오)

+ 1 이상을 선택


답변

  
import re

ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
  

대문자, 숫자 패턴으로
작동해야한다고 생각합니다 .


답변