Как проверить, соответствует ли строка этому шаблону?
Прописные буквы, цифры, прописные буквы, цифры ...
Пример, они будут соответствовать:
A1B2
B10L1
C1N200J1
Это не так ('^' указывает на проблему)
a1B2
^
A10B
^
AB400
^
Как проверить, соответствует ли строка этому шаблону?
Прописные буквы, цифры, прописные буквы, цифры ...
Пример, они будут соответствовать:
A1B2
B10L1
C1N200J1
Это не так ('^' указывает на проблему)
a1B2
^
A10B
^
AB400
^
Однострочный: 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
re.match
в контексте if
, но вы должны использовать bool
, если вы используете его в другом месте?
- person LondonRob; 13.03.2018
re.match
. Он соответствует только началу строки. Взгляните вместо этого на re.search
.
- person LondonRob; 13.03.2018
if
проверяет совпадение не None
.
- person Dennis; 18.03.2019
re
используется более чем в одном месте для повышения эффективности. Что касается ошибки, .match
выдает ту же ошибку, что и .compile
. Совершенно безопасно использовать.
- person nehem; 07.05.2020
re
компилируют и кэшируют шаблоны. Следовательно, использование компиляции с последующим сопоставлением не дает никакого повышения эффективности, чем простой вызов re.match
. Все эти функции вызывают внутреннюю функцию _compile
(включая re.compile
), которая кэширует словарь Python.
- person miksus; 30.06.2021
Пожалуйста, попробуйте следующее:
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
ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
Я считаю, что это должно работать с шаблоном прописные буквы, числа.
регулярные выражения упрощают эту задачу ...
[A-Z]
будет соответствовать ровно одному символу между A и Z
\d+
будет соответствовать одной или нескольким цифрам
()
группировать вещи (а также возвращать вещи ... но пока просто подумайте об их группировке)
+
выбирает 1 или более
re.match
: If zero or more characters at the beginning of string match the regular expression pattern
. Я просто потратил около 30 минут, пытаясь понять, почему я не могу сопоставить что-то в конце строки. Похоже, это невозможно с match
, не так ли? Для этого re.search(pattern, my_string)
работает.
- person conradkleinespel; 11.11.2016
^
в начале, когда вы используете match
. Я думаю, что это немного сложнее, чем это очень простое объяснение, но я не совсем ясен. Вы правы, что он начинается с начала строки.
- person CrazyCasta; 11.11.2016
search()
в данном контексте.
- person Robo Robok; 21.02.2021
^([A-Z]\d+){1,}$
нравится это? - person Passerby   schedule 26.09.2012B
, а не сA
. - person Burhan Khalid   schedule 26.09.2012A
, иB
маленькие буквы, верно?A10b
иaB400
? - person John Woo   schedule 26.09.2012