Здравствуйте! Сегодня: Чт, 29 Окт 2020, Ваш IP: 34.236.245.255 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - «Болталка» - разговоры на любую тему
+ Создать новую тему Страница: 1
Тема: Регулярные выражения. Поиск и замена пробелов · +  +  дата добавления: 01.09.2013 / 06:08
Автор темы:
m_v
m_v
тем: 1 / ответов: 4 / благодарностей: 0 / репутация: 0
ответов: 4
создал(а) тем: 1


Подскажите, пожалуйста, как найти и заменить нужные пробелы в тексте на перевод строки?

Если можно дайте шаблоны с двух примеров:

1)
(перевод строки)
Слово1 (пробел который нужно найти и заменить)Словарная статья
(перевод строки)
Слово2 (пробел который нужно найти и заменить)Словарная статья
(перевод строки)

2)
(перевод строки)
Слово1 Слово2 (пробел который нужно найти и заменить)Словарная статья
(перевод строки)
Слово3 Слово4 (пробел который нужно найти и заменить)Словарная статья
 
Ответ # 1 # · +x1 +  дата добавления: 01.09.2013 / 08:11
Автор ответа:
Дерепа Алексей
Дерепа Алексей
тем: 32 / ответов: 64 / благодарностей: 0 / репутация: 4
ответов: 64
создал(а) тем: 32



Dim строка As String = "apple pear banana "
строка = строка.Replace(" ", vbCrLf) 'заменяем неправильный пробел на новую строку
 
Ответ # 2 # · +x1 +  дата добавления: 01.09.2013 / 08:13
Автор ответа:
Дерепа Алексей
Дерепа Алексей
тем: 32 / ответов: 64 / благодарностей: 0 / репутация: 4
ответов: 64
создал(а) тем: 32


Или можно еще так
Dim nl As String = Environment.NewLine
Dim строка As String = "apple pear banana "
строка = строка.Replace(" ", nl) 'заменяем неправильный пробел на новую строку
 
Ответ # 3 # · +  +  дата добавления: 01.09.2013 / 09:53
Автор ответа:
m_v
m_v
тем: 1 / ответов: 4 / благодарностей: 0 / репутация: 0
ответов: 4
создал(а) тем: 1


Алексей, большое спасибо за ответ, но я ничего не понял из того что Вы написали )) я не программист, поэтому прошу растолковать задачу попроще..

У меня есть текстовый файл который мне нужно отредактировать в notepad++
Захожу: поиск - регулярное выражение - заменить. В полях "что искать" и "заменить на", что мне нужно прописывать?
 
Ответ # 4 # · +x1 +  дата добавления: 01.09.2013 / 11:17
Автор ответа:
Дерепа Алексей
Дерепа Алексей
тем: 32 / ответов: 64 / благодарностей: 0 / репутация: 4
ответов: 64
создал(а) тем: 32


У вас есть определенный текст допустим "apple pear banana " который нужно обработать таким образом: каждый пробел заменяем на абзац и начинаем писать текст с новой строки!
Поэтому мы создаем переменную "строка" и в нее заносим наш текст

Dim строка As String = "apple pear banana "

потом мы говорим, что необходимо каждый символ пробела (" ") заменить на знак переноса на следующую строку (vbCrLf).

это код:
строка = строка.Replace(" ", vbCrLf)

после чего у вас в переменной "строка" находится модифицированный текст. после чего вы его можете сохранить в текстовый файл *.txt и при открытии вы увидите, что каждое слово начинается с новой строки

 
Ответ # 5 # · +  +  дата добавления: 01.09.2013 / 11:24
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Захожу: поиск - регулярное выражение - заменить. В полях "что искать" и "заменить на", что мне нужно прописывать?
\s - пробел, отступ, перевод строки (\x20\t\r\b);
\t - TAB;
\x20 - только пробел;
\r\n - только перевод строки (можно по отдельности \r или/и \n).



PS: Сообщение перемещено из программирования в оффтоп.
 
Ответ # 6 # · +  +  дата добавления: 01.09.2013 / 13:22
Автор ответа:
m_v
m_v
тем: 1 / ответов: 4 / благодарностей: 0 / репутация: 0
ответов: 4
создал(а) тем: 1


Нет. Мне не нужно КАЖДЫЙ пробел заменять на перевод строки (для этого я бы не стал писать на форум), но только те пробелы, которые находятся после перевода строки и разных слов: одного или двух (как на примерах в первом сообщении).

Как это можно сделать?
 
Ответ # 7 # · +  +  дата добавления: 01.09.2013 / 13:39
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


1.
Входит:

Шаблон:

Выходит:


2. Все также, только два слова: ([\r\n]+)(\w+)(\x20+)(\w+)(\x20{1})
(\w+) - слово
(\x20+) - пробел

И замена на: $1$2$3$4\r\n

$1 = ([\r\n]+)
$2 = (\w+)
$3 = (\x20+)
$4 = (\w+)
$5 = (\x20{1})


Если в тексте должна присутствовать строка "Словарная статья", то можно учесть в шаблоне:
([\r\n]+)(\w+)(\x20+)Словарная статья
Замена на:
$1$2\r\nСловарная статья


Если "Словарная статья" - это что-то другое, то шаблон будет сложнее.
 
Ответ # 8 # · +  +  дата добавления: 01.09.2013 / 15:28
Автор ответа:
m_v
m_v
тем: 1 / ответов: 4 / благодарностей: 0 / репутация: 0
ответов: 4
создал(а) тем: 1


"Словарная статья" - это описание термина, а там где "Слово1", "Слово2" и т.д. - это сами термины. Файл огромный и обработать его "руками" не представляется возможным.

Не знаю в чем причина, у меня по представленным шаблонам не ищет вообще никак...всё сделал как на картинке, т.е. забиваю в поле "Найти" ([\r\n]+)(\w+)(\x20{1}) или ([\r\n]+)(\w+)(\x20+)(\w+)(\x20{1}) выставляю "Регулярное выражение" И ничего НЕ НАХОДИТ.
Notepad++ v5.6.2 Пункта "Зациклить поиск" (где на картинке стоит галочка) в нём нет.

Находит термины если прописать ^(\w+) или ^(\w+) (\w+)
И соответственно, если добавить x20 то и пробел тоже. А как сделать чтобы находил только пробел, после этих слов (терминов)?
 
Ответ # 9 # · +  +  дата добавления: 01.09.2013 / 15:43
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Нужен образец реального текста.

У меня Notepad++ версия 6.3, но это вряд ли может повлиять на работу регулярных выражений, разве что в блокноте баг (вероятность мала, с учетом особенностей работы регулярных выражений).
 
Ответ # 10 # · +  +  дата добавления: 02.09.2013 / 12:46
Автор ответа:
m_v
m_v
тем: 1 / ответов: 4 / благодарностей: 0 / репутация: 0
ответов: 4
создал(а) тем: 1


Алексей, большое спасибо за помощь, я обновил на компьютере Notepad++ до версии 6.3 и шаблоны работают! Получилось перевести строку там где надо, однако, в тексте пропущены (не заменены) слова которые идут через тире:

Слово-слово Словарная статья

Как можно это исправить?

Т.е. сделать так:

Слово-слово
Словарная статья

И еще один вопрос. Как поменять регистр букв, для терминов с нижнего на верхний и наоборот?

Слово Словарная статья
на
СЛОВО Словарная статья

или

слово Словарная статья
на
СЛОВО Словарная статья
 
Ответ # 11 # · +  +  дата добавления: 02.09.2013 / 13:00
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


в тексте пропущены (не заменены) слова которые идут через тире
([\w\-]+)

Еще могут быть проблемы с буквой "Ё", её тоже можно указать, или сразу все буквы:
([0-9A-Za-zА-Яа-яЁё\-]+)
0-9, A-Z, А-Я - это диапазон (от 0 до 9, от A до Z, от А до Я).
Ё - отдельно, т.к. она вне диапазона (по кодам ASCII).
Как поменять регистр букв, для терминов с нижнего на верхний и наоборот?
Одними только регулярными выражениями тут не обойтись..
 
Ответ # 12 # · +  +  дата добавления: 09.03.2014 / 04:52
Автор ответа:
1047299
1047299
тем: 0 / ответов: 2 / благодарностей: 0 / репутация: 0
ответов: 2
создал(а) тем: 0


Подскажите еще как в файле текстовом удалить все кроме имейлов.

Вот сами имейлы
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}

а как написать - все кроме етого, непойму.
 
Ответ # 13 # · +  +  дата добавления: 09.03.2014 / 12:32
Автор ответа:
i32
i32
тем: 71 / ответов: 280 / благодарностей: 2 / репутация: 38
ответов: 280
создал(а) тем: 71


Dim sFileContent As String = TextBox6.Text
        sFileContent = Regex.Replace(sFileContent, "(\\)", "", RegexOptions.Multiline)
        TextBox6.Text = sFileContent
Из регулярки типо так удаляй ..Все идет нормально..Если надо все удалить .Кроме символа
.То я бы быстрей все прописал как выше и не парился...Если это не задача по информатики...
Технологии: .NET Framework
 
Ответ # 14 # · +  +  дата добавления: 09.03.2014 / 15:39
Автор ответа:
1047299
1047299
тем: 0 / ответов: 2 / благодарностей: 0 / репутация: 0
ответов: 2
создал(а) тем: 0


Сори забыл уточнить, это в Notepad++ и просто нужно заменить все кроме этого на пробел.
Есть варианты как это сделать?
МНе когда то показывали в несколько шагов как это сделать, но я бы хотел написать одно регулярное выражение.
 
Ответ # 15 # · +  +  дата добавления: 13.03.2014 / 17:45
Автор ответа:
i32
i32
тем: 71 / ответов: 280 / благодарностей: 2 / репутация: 38
ответов: 280
создал(а) тем: 71


Прога с лицензией . Надо почитать..TXT как и что...Если есть выход то регись и флаг..( это по русский написано возможно не поймешь..)АЙПИ - всмысле программы...А так уже как (Каков оборот.сам не понял..) называется у вас ..Сам решай..Только я не впарил..Отпиши админам они сделают такую функцию
безпроблем..в НОТЕПАДЕ..А зачем в приложениях использовать НОТЕПАГ ???..В вб .нет что ли не описать конкретно что - либо ?
 
Страница: 1 + Создать новую тему