Помогите нубу с регуляркой!
Есть дурацкие строки.
Строка состоит из следующих частей [<начало>][<табуляции>]<символы>\n <начало> - последовательность из пробелов, \n, \t (необязат. часть) <табуляции> - последовательность только из \t (необязат. часть) <символы> - всякие печатные символы, включая пробел Нужно удалить часть <начало>. Т.е. "строка\n" => "строка\n" "\n \nстрока\n" => "строка\n" " \n\t \nстрока\n" => "строка\n" " \n\t \n\t\tстрока\n" => "\t\tстрока\n" "\t\tстрока\n" => "\t\tстрока\n" "\t \t строка\n" => "\t строка\n" |
Алгоритмически это так - Находим первый печатный символ, от него отступаем назад, пока пробелы, потом отступаем назад, пока табуляции. Все, что осталось вначале удаляем.
Но хотелось бы регуляркой. |
voraa,
trimLeft() ? |
voraa,
str = str.replace(/^\s+/mig, '') |
voraa, как вариант...
let re=/[\s]{0,2}строка$/; let str='начало строка'; alert('"'+str.match(re)+'"'); |
Нет.
Не все так просто. см пост 2 Надо оставить последнюю группу табуляций, которая предшествует символам строки (включая пробелы). Т.е если есть часть "\t\t string", то ее оставляем. Для облегчения задачи можно и \n отбросить. Сам split ом разделю строку по \n |
Цитата:
Так сколько пробелов или табуляций тебе нужно оставлять перед "строка"? |
Вот так будут оставлены все пробелы и табуляции
let re=/[\s]*строка$/; let str='начало строка'; alert('"'+str.match(re)+'"'); |
Цитата:
то "\t\s\t\sстрока\n" => "\t\sстрока\n" "\t\s\t\t\sстрока\n" => "\t\t\sстрока\n" "\t\s\t\t\s\sстрока\n" => "\t\t\s\sстрока\n" Перед первым печатным символом оставляем все пробелы, а перед ними все табуляции. (В регулярке под \s подходят и пробелы и \t и \r и \n) <начало> - последовательность из пробелов, \n, \t (необязат. часть) (пост 1) |
Цитата:
let re=/\t*\s*строка$/; let str='начало строка'; alert('"'+str.match(re)+'"'); |
Часовой пояс GMT +3, время: 03:07. |