Как проверить, соответствует ли строка этому шаблону?
Прописная буква, число (я), заглавная буква, число (я) ...
Пример, они будут соответствовать:
A1B2
B10L1
C1N200J1
Это не будет ('^' указывает на проблему)
a1B2
^
A10B
^
AB400
^
python
regex
string-matching
DanielTA
источник
источник
^([A-Z]\d+){1,}$
как это?B
а не сA
.A
и другоеB
, верно?A10b
аaB400
?Ответы:
Редактировать: Как отмечено в комментариях,
match
проверяется только совпадения в начале строки, в то время какre.search()
будет сопоставляться с шаблоном в любом месте строки. (См. Также: https://docs.python.org/library/re.html#search-vs-match ).источник
re.match
:If zero or more characters at the beginning of string match the regular expression pattern
. Я потратил около 30 минут, пытаясь понять, почему я не могу сопоставить что-либо в конце строки. Похоже, это невозможноmatch
, не так ли? Для этогоre.search(pattern, my_string)
работает, хотя.^
в начале вы используете что-то вроде подразумеваемогоmatch
. Я думаю, что это немного сложнее, чем это очень простое объяснение, но мне не ясно. Вы правы, что он начинается с начала строки.Один лайнер:
re.match(r"pattern", string) # No need to compile
Вы можете оценить его,
bool
если это необходимоисточник
import re
как первая строкаre.match
в контекстеif
, но вы должны использовать,bool
если вы используете его в другом месте?re.match
. Соответствует только в начале строки. Взглянитеre.search
вместо этого.if
проверок на совпадение не былоNone
.Пожалуйста, попробуйте следующее:
источник
источник
регулярные выражения делают это легко ...
[A-Z]
будет точно соответствовать одному символу между A и Z\d+
будет соответствовать одной или нескольким цифрам()
группировать вещи (а также возвращать вещи ... но пока просто подумайте о них, группируя)+
выбирает 1 или болееисточник
Я считаю, что это должно работать для прописных букв, чисел .
источник