Python любитель здесь:Использования переменных в регулярных выражениях
Я просто играл с регулярными выражениями, и я пришел через это:
import re
while True:
userInput = input('Type in your string here: ')
regexInput = input('Enter Regex pattern here:')
testRegex = re.compile([^regexInput])
testMO = testRegex.search(userInput)
print(testMO.group())
В принципе, я хочу, чтобы мое регулярное выражение, чтобы соответствовать все кроме шаблона, который я указал через regexInput. Тем не менее, я получаю синтаксические ошибки из этого кода. Я думал, что положить морковь сразу после открытия скобки класса символов, это означает, что Python будет искать все, кроме того, что находится в скобке? Я делаю последний проект главы 7 в разделе «Автоматизация скучных вещей». Как я могу заставить свой код соответствовать всем, кроме того, что напечатано в regexInput?
Кто это сказал мне:
регулярное выражение ожидает строку, так что вы должны создать строку:
"[^" + regexInput +"]" or "[^{}]".format(regexInput)
Я не в полной мере понять этот ответ, особенно вторую часть ответа. Просто чтобы проверить, что он сказал, я использовал этот код:
import re
while True:
userInput = input('Type in your string here: ')
regexInput = input('Enter Regex pattern here:')
testRegex = re.compile(regexInput)
testMO = testRegex.search(userInput).group()
print(testMO)
Который дал мне выход:
Type in your string here: Here lies Batman.
Enter Regex pattern here:Batman
Batman
Type in your string here:
Означает ли это, что регулярное выражение также принял переменную, и сделал это Работа? Поэтому я немного смущен тем, что сказал этот другой человек, поскольку это противоречит его утверждению «regex
ожидает строка».
Короткий ответ: 'input' возвращает строку. Строки отличаются от буквенного кода, что и вызывало синтаксическую ошибку. – BallpointBen
Это не противоречит заявлению. 'input()' возвращает строку. Ваши два примера кода не эквивалентны. Существует несколько способов создания строки в Python, вставляя литеральный текст * внутри кавычек *, один, чтение из входного потока (с использованием 'input()') - другое. – cdarke
Что вы ожидаете от вывода в вашем примере? – augurar