检查string是否匹配模式
我如何检查一个string是否匹配这个模式?
大写字母,数字,大写字母,数字…
例如,这些将匹配:
A1B2 B10L1 C1N200J1
这些不会('^'指向问题)
a1B2 ^ A10B ^ AB400 ^
import re pattern = re.compile("^([AZ][0-9]+)+$") pattern.match(string)
请尝试以下操作:
import re name = ["A1B1", "djdd", "B2C4", "C2H2", "jdoi","1A4V"] # Match names. for element in name: m = re.match("(^[AZ]\d[AZ]\d)", element) if m: print(m.groups())
import re import sys prog = re.compile('([AZ]\d+)+') while True: line = sys.stdin.readline() if not line: break if prog.match(line): print 'matched' else: print 'not matched'
单行: re.match(pattern, string)
>>> if re.match('hello[0-9]+', 'hello1'): #no need of re.compile() ... print('Yes') ... Yes
如果你没有在上下文中使用,那么你必须用bool
函数来评估它
>>> bool(re.match('hello[0-9]+', 'hello1')) True
然而,如果Python的string类包含这样的方法,那将是非常棒的。
>>> 'hello123'.regex('hello[0-9]+') True
import re ab = re.compile("^([AZ]{1}[0-9]{1})+$") ab.match(string)
import re ab = re.compile("^([AZ]{1}[0-9]{1})+$") ab.match(string)
我相信应该适用于大写,数字模式。
正则expression式使这容易…
A和Z之间只能匹配一个字符
\d+
将匹配一个或多个数字
()
分组的东西(也返回的东西…但现在只是想到他们分组)
+
select1或更多