Programing

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

lottogame 2020. 4. 3. 08:11
반응형

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


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

대문자, 숫자, 대문자, 숫자 ...

예를 들면 다음과 일치합니다.

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)
  


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

참고 URL : https://stackoverflow.com/questions/12595051/check-if-string-matches-pattern

반응형