Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.100.210] |
|
Сообщ.
#1
,
|
|
|
Как сделать пробел с помощью регулярного выражения между цифрами и текстом. Например "01Растениеводство" сделать разделение меду 01 и Растениеводство, 01.1 и Выращивание, 01.11 и Выращивание зерновых, 01.11.1 и Выращивание зерновых культур. Пример кода ниже. Регулярное выражение будет вставляться в Sublime Text для разделения последней цифры от первой буквы. тип регулярки re:(\d+)
01Растениеводство и животноводство, охота и предоставление соответствующих услуг в этих областях 01.1Выращивание однолетних культур 01.11Выращивание зерновых (кроме риса), зернобобовых культур и семян масличных культур 01.11.1Выращивание зерновых культур 01.11.11Выращивание пшеницы 01.11.12Выращивание ячменя 01.11.13Выращивание ржи 01.11.14Выращивание кукурузы 01.11.15Выращивание овса 01.11.16Выращивание гречихи 01.11.19Выращивание прочих зерновых культур |
Сообщ.
#2
,
|
|
|
Ну например
((\d+\.?)+)([^0-9. ]\S+) $1 $3 |
Сообщ.
#3
,
|
|
|
([0-9\.]+)(.*) Тестировать тут. Если же нужно захватывать пробелы в начале строки, то вот так: ^([0-9\. ]+)(.*)$ Добавлено Цитата Qraizer @ Ну например ExpandWrap offLine numbers ((\d+\.?)+)([^0-9. ]\S+) Строка замены просто ExpandWrap offLine numbers $1 $3 Нет, твой регексп неправильный. Смотри. |
Сообщ.
#4
,
|
|
|
Первые 2, после цифр все удаляет, но третий код регулярки помог. Спасибо.
|
Сообщ.
#5
,
|
|
|
И что там неправильного? То, что я не буду вставлять пробел, когда он уже и так есть? Или то, что он индифферентен к параметру жадности по умолчанию? Я что-то не вижу по ссылке отличий.
|
Сообщ.
#6
,
|
|
|
Цитата Qraizer @ И что там неправильного? У тебя $3 не забирает всю оставшуюся часть строки, а только первое слово. |
Сообщ.
#7
,
|
|
|
А надо разве? Поиск-то тоже не по всей строке идёт. Это ты решил расставить ^ с $ по бокам, у меня их нет. То, что не попало под регулярку, должно остаться неизменным. Оно и останется. Проверь Search and Replace в любом редакторе, хоть бы и в FARе. Хошь я тебе на Плюсах с <regex> продемонстрирую?
Добавлено #include <iostream> #include <string> #include <regex> using namespace std::literals; int main() { std::string str = "01.11.1Выращивание зерновых культур"; std::regex rg("((\\d+\\.?)+)([^0-9. ]\\S+)"s); std::string out = std::regex_replace(str, rg, "$1 $3"s); std::cout << out << std::endl; } 01.11.1 Выращивание зерновых культур |
Сообщ.
#8
,
|
|
|
Цитата Qraizer @ А надо разве? Поиск-то тоже не по всей строке идёт. Это ты решил расставить ^ с $ по бокам, у меня их нет. То, что не попало под регулярку, должно остаться неизменным. Оно и останется. Проверь Search and Replace в любом редакторе, хоть бы и в FARе. Хошь я тебе на Плюсах с <regex> продемонстрирую? Ну, в принципе, для поиска-замены вся строка и не нужна. Ok, развидь, что я написал выше |
Сообщ.
#9
,
|
|
|
Та не, в общем случае замечание резонное. Другое дело, что непонятно, действиетльно ли оно важно.
|
Сообщ.
#10
,
|
|
|
|