2014-01-04 4 views
1

Я хочу проверить шаблон строки.Проверка формата строки

st1 = 'ABBBBBBB' 
st2 = 'ABBBBA' 
st3 = 'ABB' 
st4 = 'BABBB' 

Я хочу знать, если строка содержит «A» и после него только «BB» поэтому ответ на это будет:

st1 истинно,
st2 является ложным,
st3 истинно,
st4 является Ложные

Я попытался с помощью функции формата, но он не работал.

+2

_ «Я пытался использовать формат fucntion, но он не работал» _ __show_ нас, что вы пробовали, не просто _tell_ us – Eric

ответ

4

Вы хотите регулярное выражение:

import re 

abb_pattern = re.compile(r'^ABB+$') 

def has_abb(string): 
    return abb_pattern.match(string) is not None 

Демо:

>>> import re 
>>> abb_pattern = re.compile(r'^ABB+$') 
>>> def has_abb(string): 
...  return abb_pattern.match(string) is not None 
... 
>>> has_abb('ABBBBBBB') 
True 
>>> has_abb('ABBBBA') 
False 
>>> has_abb('ABB') 
True 
>>> has_abb('BABBB') 
False 
+0

Что означает r в 'r '^ ABB + $''? Проверял документ, но не смог его найти. – Callahan

+1

r = необработанная строка. ^ = начало выражения. $ = конец выражения. – varunl

+0

Не могли бы вы повторить пример, когда некорректная строка была бы ошибочной? Я никогда не нуждался в этом до сих пор, поэтому мне любопытно. – Callahan

0

Вы можете использовать регулярные выражения.

import re 
matched = re.match("^ABB+$", st1) 
if matched: 
    matched = True 
else: 
matched = False 

Запустите это для каждого из ваших sts в цикле или что угодно, и у вас будет список истинных ложных значений.

+0

Решение Martijn является более точным, так как выражение должно быть в начале строки и одновременно заканчивать строку. – Callahan

Смежные вопросы