Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2017, 19:51
Новичок на форуме
Отправить личное сообщение для William Blake Посмотреть профиль Найти все сообщения от William Blake
 
Регистрация: 09.05.2017
Сообщений: 5

Получить три последних слова в строке, используя regexp?
Например, есть строка "Der Abend ist jung und wir haben viel vor" или "Er hat sich ein Haus am Meeresstrand gekauft". Дле первой строки я получу "haben viel vor", для второй — "am Meeresstrand gekauft". И если можно такие резудльтаты получить, то как? Например, такое регулярное выражение ищет какое-либо одно слово на латинице в предложении, при чем последнее: /\b\w{1,}$/ . Так, для первой строки я бы получил vor, а для второй — gekauft.
Честно говоря, особо не разбираюсь в regexp и просто нахожусь в погоне за быстрым решением. На веб-странице есть некоторая textArea, в нее вводят предложения и нужно постоянно отбирать из введенного последние три слова. Можно, конечно, все это без regexp написать, но не хочется возиться с распарсиванием строк.
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2017, 19:56
Новичок на форуме
Отправить личное сообщение для William Blake Посмотреть профиль Найти все сообщения от William Blake
 
Регистрация: 09.05.2017
Сообщений: 5

Тфу, ну, собственно \w+\s\w+\s\w+ .
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2017, 20:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,135

William Blake,
var str = "Der Abend ist jung und wir haben viel vor"
alert( str.split(/\s+/).slice(-3) );
Ответить с цитированием
  #4 (permalink)  
Старый 11.05.2017, 20:14
Новичок на форуме
Отправить личное сообщение для William Blake Посмотреть профиль Найти все сообщения от William Blake
 
Регистрация: 09.05.2017
Сообщений: 5

Спасибо! А что быстрее будет в данном случае, использовать то, что предложили Вы или regexp?
Ответить с цитированием
  #5 (permalink)  
Старый 11.05.2017, 20:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,135

William Blake,
если у вас не миллионы строк, то без разницы, regexp считается медленнее, но надо сравнивать.
Ответить с цитированием
  #6 (permalink)  
Старый 12.05.2017, 10:19
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

alert(/\w+\s+\w+\s+\w+(?=\s*$)/.exec('Der Abend ist jung und wir haben viel vor')[0]);


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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слова по строке Georrg Общие вопросы Javascript 6 13.08.2014 11:35
iframe desighmode=on получить текст от курсора до начала слова w3c браузеры hazarin Общие вопросы Javascript 0 08.07.2014 23:38
Замена слова в строке на определенной позиции Hapson Общие вопросы Javascript 3 18.01.2014 05:17
Regexp обрезать короткие слова vivalaakam Общие вопросы Javascript 14 23.01.2013 13:47
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03