检查字符串是否匹配模式

时间:2012-09-26 05:27:36

标签: python regex string-matching

如何检查字符串是否与此模式匹配?

大写字母,数字,大写字母,数字......

示例,这些将​​匹配:

A1B2
B10L1
C1N200J1

这些不会('^'指向问题)

a1B2
^
A10B
   ^
AB400
^

6 个答案:

答案 0 :(得分:352)

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

答案 1 :(得分:118)

单行: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

答案 2 :(得分:32)

请尝试以下方法:

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())

答案 3 :(得分:22)

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'

答案 4 :(得分:7)

正则表达式使这很容易......

[A-Z]将恰好匹配A和Z之间的一个字符

\d+将匹配一个或多个数字

()组合事物(并且还返回事物......但现在只想到它们分组)

+选择1个或更多

答案 5 :(得分:6)

  
import re

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


我相信这应该适用于大写,数字模式。