Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить три последних слова в строке, используя regexp? (https://javascript.ru/forum/misc/68821-poluchit-tri-poslednikh-slova-v-stroke-ispolzuya-regexp.html)

William Blake 11.05.2017 19:51

Получить три последних слова в строке, используя 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 написать, но не хочется возиться с распарсиванием строк.

William Blake 11.05.2017 19:56

Тфу, ну, собственно \w+\s\w+\s\w+ .

рони 11.05.2017 20:09

William Blake,
var str = "Der Abend ist jung und wir haben viel vor"
alert( str.split(/\s+/).slice(-3) );

William Blake 11.05.2017 20:14

Спасибо! А что быстрее будет в данном случае, использовать то, что предложили Вы или regexp?

рони 11.05.2017 20:26

William Blake,
если у вас не миллионы строк, то без разницы, regexp считается медленнее, но надо сравнивать.

Alexandroppolus 12.05.2017 10:19

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


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


Часовой пояс GMT +3, время: 09:11.