import
re
import
string
from
random
import
choice
def
replace
(
user_input
:
str
)
-
>
str
:
letters
=
''
.
join
(
choice
(
string
.
ascii_letters
)
for
_
in
range
(
3
)
)
numbers
=
''
.
join
(
choice
(
string
.
digits
)
for
_
in
range
(
3
)
)
return
f"{numbers}{user_input.replace('[ b][ b][ b]', '').replace('[c][c][c]', '')}{letters}"
def
regex_replace
(
user_input
:
str
)
-
>
str
:
for
target
in
re
.
finditer
(
r'\[ b\]'
,
user_input
)
:
user_input
=
re
.
sub
(
target
.
re
.
pattern
,
choice
(
string
.
digits
)
,
user_input
,
count
=
1
)
for
target
in
re
.
finditer
(
r'\[c\]'
,
user_input
)
:
user_input
=
re
.
sub
(
target
.
re
.
pattern
,
choice
(
string
.
ascii_letters
)
,
user_input
,
count
=
1
)
return
user_input
Постановка задачи у тебя очень мутная. Ты даешь четкий шаблон текста, при этом просишь сделать это регуляркой.
Если у тебя текст всегда соответствует шаблону [ b][ b][ b]FFF[c][c][c], тогда не имеет никакого смысла использовать регекс, просто на входе проверить, соответствие введенной строки данному шаблону, в таком случае будет уместна первая функция - replce. Если же ты не знаешь количество вхождений [c] и [ b] в строке, тогда нужно использовать только второй вариант - regex_replace, он заменит все вхождения подстрок.
Я вообще не писал про регулярные выражения, не выдумывай....
Спасибо за код, думаю еще пригодится. Он чуть короче, чем код выше. Но тот я уже вставил в свой скрипт
Я вообще не писал про регулярные выражения, не выдумывай....
Спасибо за код, думаю еще пригодится. Он чуть короче, чем код выше. Но тот я уже вставил в свой скрипт
Цитата:
Сообщение от laiser
А можно код? В регулярках вообще не шарю, хоть раз 100 пытался разобраться...
А код выше ну уж слишком не понятный и не рабочий(пытался починить)