Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.08.2017, 17:44
Новичок на форуме
Отправить личное сообщение для vovnet Посмотреть профиль Найти все сообщения от vovnet
 
Регистрация: 05.08.2017
Сообщений: 4

Помогите написать регулярку
Привет всем. Помогите составить регулярное выражение, уже бьюсь пол дня и все никак.
Есть строка
Код:
12:32   Вася Пупкин наложил проклятие на игрока Петя
Нужно доставать из этой строки имя первого игрока Вася Пупкин.
Спасибо, что обратили внимание на тему.
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2017, 17:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если Пупкин всегда вначале, то "Вася Пупкин наложил проклятие на игрока Петя".split(" ", 2).join(" ").

Последний раз редактировалось laimas, 05.08.2017 в 18:06.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2017, 18:28
Новичок на форуме
Отправить личное сообщение для vovnet Посмотреть профиль Найти все сообщения от vovnet
 
Регистрация: 05.08.2017
Сообщений: 4

Сообщение от laimas Посмотреть сообщение
Если Пупкин всегда вначале, то "Вася Пупкин наложил проклятие на игрока Петя".split(" ", 2).join(" ").
Дело в том, что Вася Пупкин - это ник, который всегда разный и перед ним временная метка. Получается что-то вроде такого шаблона:
20:13 <name 1> наложил проклятье на <name 2>
И нужно динамически получать name 1.
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2017, 18:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

vovnet,
если ник не содержит цифр
var reg =/\D+(?=наложил проклятие)/;
var str = "12:32   Вася Пупкин наложил проклятие на игрока Петя";
str = str.match(reg);
str = str ? str[0]:"";
alert(str.trim());

Последний раз редактировалось рони, 05.08.2017 в 18:42.
Ответить с цитированием
  #5 (permalink)  
Старый 05.08.2017, 18:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

vovnet,
var reg =/\d+:\d+(.*)(?=наложил проклятие)/;
var str = "12:32   Вася2018 Пупкин наложил проклятие на игрока Петя";
str = str.match(reg);
str = str ? str[1]:"";
alert(str.trim());
Ответить с цитированием
  #6 (permalink)  
Старый 05.08.2017, 18:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от vovnet
Дело в том, что Вася Пупкин - это ник, который всегда разный и перед ним временная метка
Должны быть четкие определения. То что сперва метка времени, а за ней обязательно ник, это уже хорошо, но Пупкин может быть и просто Пупкиным, а не Васей, или Васей Пупкиным Преображенским, а речь может идти о чем угодно, а это уже сложности.
Ответить с цитированием
  #7 (permalink)  
Старый 05.08.2017, 19:00
Новичок на форуме
Отправить личное сообщение для vovnet Посмотреть профиль Найти все сообщения от vovnet
 
Регистрация: 05.08.2017
Сообщений: 4

Сообщение от рони Посмотреть сообщение
vovnet,
var reg =/\d+:\d+(.*)(?=наложил проклятие)/;
var str = "12:32   Вася2018 Пупкин наложил проклятие на игрока Петя";
str = str.match(reg);
str = str ? str[1]:"";
alert(str.trim());
Спасибо, вроде то что нужно. А как можно в строку поиска вставить переменную со вторым ником, чтобы было наподобие:
var nick = "Петя";
var reg =/\d+:\d+(.*)(?=наложил проклятие + nick)/;
Ответить с цитированием
  #8 (permalink)  
Старый 05.08.2017, 19:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от vovnet
Спасибо, вроде то что нужно.
У вас что конкретно для этой строки поиск, о проклятии Васи Пупкина? Ведь если текст будет иной, это работать не будет. И поиск var nick = "Петя";, это если узнать что такой именно есть, как собственно и для Пупкина в таком случае, иначе же это просто глупость.
Ответить с цитированием
  #9 (permalink)  
Старый 05.08.2017, 19:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

vovnet,
на ... ? зачем?
var nick = "Петя";
var reg = new RegExp("\\d+:\\d+(.*)(?=наложил проклятие на игрока "+nick+")");
var str = "12:32   Вася2018 Пупкин наложил проклятие на игрока Петя";
str = str.match(reg);
str = str ? str[1]:"";
alert(str.trim());
Ответить с цитированием
  #10 (permalink)  
Старый 05.08.2017, 19:40
Новичок на форуме
Отправить личное сообщение для vovnet Посмотреть профиль Найти все сообщения от vovnet
 
Регистрация: 05.08.2017
Сообщений: 4

Ну чтобы можно было фильтровать различных персонажей
Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать условия совершения события wingsfury Events/DOM/Window 1 21.12.2016 23:03
помогите написать простое расширение к гугл хрому OSKOKOS Javascript под браузер 4 13.11.2014 18:32
Помогите написать регулярку starjons Общие вопросы Javascript 9 03.09.2014 18:16
Помогите пожалуйста правильно написать скрипт raffx Events/DOM/Window 17 16.10.2012 20:31
Помогите сделать регулярку для HTML шаблона zeraid Общие вопросы Javascript 1 25.12.2011 15:28