HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.01.2022, 17:55
Kecer
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами: 2862489

Репутация: 18
По умолчанию

Добрый день, пишу бота вк и хотел бы найти замену на регулярные вырежния

JavaScript:





Код:
bot
.
hear
(
/^(?:!test) (.*)$/i
,
msg
=>
{
msg
.
send
(
`${msg.$match[1]}`
)
}
)


В общем проблема в том что когда я делаю 2 и более регулярных выражения, то-есть (.*) (.*) То в таком случае оно принимает одно слово, это и логично, но как сделать так что бы одно из регулярных выражений принимало несколько слов? без ограничений
 
Ответить с цитированием

  #2  
Старый 24.01.2022, 18:26
meowprd
Познавший АНТИЧАТ
Регистрация: 04.07.2019
Сообщений: 1,297
С нами: 3611265

Репутация: 183


По умолчанию

с js особо не дружу

пример ввода:

Код:
!test string1 string2
регулярка:

Код:
^!test (\w+) (\w+)$
 
Ответить с цитированием

  #3  
Старый 24.01.2022, 18:27
chapo
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами: 5046982

Репутация: 183


По умолчанию

Код:
(.+)(%s+)(.+)
 
Ответить с цитированием

  #4  
Старый 24.01.2022, 18:34
Kecer
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами: 2862489

Репутация: 18
По умолчанию

Цитата:
Сообщение от chapo  

Код:
(.+)(%s+)(.+)
Го реально работает спасибки, ещё такой вопрос можно ли как-то проверку на эти регулярки сделать то есть допустим как пример

if(!msg.$match[2]) return msg.send('Вы не указали параметр')
 
Ответить с цитированием

  #5  
Старый 24.01.2022, 18:50
Liquit
Участник форума
Регистрация: 23.04.2020
Сообщений: 278
С нами: 3188613

Репутация: 98
По умолчанию

регулярки может и удобно, но я предлагаю реализовать немного по удобнее, например так:

JavaScript:





Код:
if
(
ctx
.
text
.
startsWith
(
prefix
)
)
{
let
msgToParse
=
ctx
.
text
.
slice
(
prefix
.
length
)
// чикчирикаем префикс
let
params
=
msgToParse
.
split
(
" "
)
// парсим строку
let
cmd
=
params
[
0
]
// получаем переменную
// все остальные параметры - params[1], params[2] и так далее, в зависимости от того, что нужно сделать
}


так, я думаю будет удобнее работать с параметрами

вот, к примеру реализация простейшей команды, которая будет приветствовать пользователя(я не претендую на красивый код, давно писал, сам знаю что фигово написано, лучше промисом сделать)

JavaScript:





Код:
if
(
cmd
==
"get"
&&
params
[
1
]
.
length
!=
0
)
{
let
user
await
vk
.
api
.
users
.
get
(
{
user_ids
:
getIdFromString
(
params
[
1
]
)
}
)
.
then
(
res
=>
{
user
=
res
}
)
console
.
log
(
user
[
0
]
.
first_name
)
if
(
user
)
{
ctx
.
send
(
`Hello, [id${user[0].id}|${user[0].first_name}]`
)
}
}
 
Ответить с цитированием

  #6  
Старый 24.01.2022, 18:58
Kecer
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами: 2862489

Репутация: 18
По умолчанию

Цитата:
Сообщение от Liquit  

регулярки может и удобно, но я предлагаю реализовать немного по удобнее, например так:

JavaScript:





Код:
if
(
ctx
.
text
.
startsWith
(
prefix
)
)
{
let
msgToParse
=
ctx
.
text
.
slice
(
prefix
.
length
)
// чикчирикаем префикс
let
params
=
msgToParse
.
split
(
" "
)
// парсим строку
let
cmd
=
params
[
0
]
// получаем переменную
// все остальные параметры - params[1], params[2] и так далее, в зависимости от того, что нужно сделать
}


так, я думаю будет удобнее работать с параметрами
вот, к примеру реализация простейшей команды, которая будет приветствовать пользователя(я не претендую на красивый код, давно писал, сам знаю что фигово написано, лучше промисом сделать)

JavaScript:





Код:
if
(
cmd
==
"get"
&&
params
[
1
]
.
length
!=
0
)
{
let
user
await
vk
.
api
.
users
.
get
(
{
user_ids
:
getIdFromString
(
params
[
1
]
)
}
)
.
then
(
res
=>
{
user
=
res
}
)
console
.
log
(
user
[
0
]
.
first_name
)
if
(
user
)
{
ctx
.
send
(
`Hello, [id${user[0].id}|${user[0].first_name}]`
)
}
}

Очень заморочено, код у меня большой, и всё подстроить под это будет очень сложно потому-что регулярки у меня используется почти везде
 
Ответить с цитированием

  #7  
Старый 24.01.2022, 19:09
Liquit
Участник форума
Регистрация: 23.04.2020
Сообщений: 278
С нами: 3188613

Репутация: 98
По умолчанию

Цитата:
Сообщение от Kecer  

Очень заморочено, код у меня большой, и всё подстроить под это будет очень сложно потому-что регулярки у меня используется почти везде
ну переделай остальное, так код хотя бы становится более читабельней
 
Ответить с цитированием

  #8  
Старый 24.01.2022, 19:30
Kecer
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами: 2862489

Репутация: 18
По умолчанию

Цитата:
Сообщение от chapo  

Код:
(.+)(%s+)(.+)
поспешил я с выводами, оно так же криво работает как и работало ранее, мб чёто не так делаю можно пример?
 
Ответить с цитированием

  #9  
Старый 24.01.2022, 19:31
feelzyourertry
Участник форума
Регистрация: 18.12.2018
Сообщений: 163
С нами: 3896797

Репутация: 18
По умолчанию

мужики подобная ***ня приносит свои плоды в виде бабок?
 
Ответить с цитированием

  #10  
Старый 24.01.2022, 19:37
Kecer
Участник форума
Регистрация: 05.12.2020
Сообщений: 241
С нами: 2862489

Репутация: 18
По умолчанию

Цитата:
Сообщение от feelzyourertry  

мужики подобная ***ня приносит свои плоды в виде бабок?
Ты хочешь что бы я тебе заплатил денег за то что ты уделишь мне 3 - 4 минуты?
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.