Бесплатно напишу регулярное выражение. Часть 2.

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
:bo:работает!!!! спасибо!!! вот еще подскажите, как переносы убрать? (\r\n).?
 

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
всем спасибо за помощь, разобрался!
 

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
Radzhab, огромная вам благодарность за помощь!
 
  • Спасибо
Реакции: Radzhab

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Да не за что)
 

rotornet

Client
Регистрация
19.07.2012
Сообщения
53
Благодарностей
86
Баллы
18
Подскажите, в таком формате: Sep 28 или Okt 2 как взять только цифры, [0-9]* берет только если-б цифры были в начале, а тут? Или от обратного, удалить всё, что не цифры (с пробелами), а числа оставить?
 

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
Подскажите, в таком формате: Sep 28 или Okt 2 как взять только цифры, [0-9]* берет только если-б цифры были в начале, а тут? Или от обратного, удалить всё, что не цифры (с пробелами), а числа оставить?
PHP:
[0-9]{1,3}.*?
или
PHP:
\w{1,3}.*?  - берем 2 параметр
или
PHP:
\d{1,3}.*?
 
  • Спасибо
Реакции: rotornet

rotornet

Client
Регистрация
19.07.2012
Сообщения
53
Благодарностей
86
Баллы
18
females, спасибо, а что означает здесь {1,3} ?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
это значит количество цифр от 1 до 3
 
  • Спасибо
Реакции: rotornet

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
Подскажите регулярку-способ.... нужно чтобы в одной строчке текст выводился допустим 70 символов, но чтобы слова не резались.
Допустим. у нас есть предложение
Он небольшой, но сделан в виде пошагового плана со всеми нужными шаблонами. Вы идете строго по шагам,которые просты и понятны.
Как сделать так, чтобы было примерно так:
Он небольшой, но сделан в виде
пошагового плана со всеми нужными
шаблонами. Вы идете строго по шагам,
которые просты и понятны.
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Можно в цикле перебрать строку и заменить пробелы на перенос строки по индексам.
Код:
 string text = "Он небольшой, но сделан в виде пошагового плана со всеми нужными шаблонами. Вы идете строго по шагам,которые просты и понятны.";
            StringBuilder strb = new StringBuilder(text);
            for (int i = 70; i < strb.Length; )
            {
                if (strb[i] != ' ')
                {
                    i--;
                }
                else
                {
                    strb.Replace(" ", "\r\n", i, 1);
                    i += 70;
                }
            }
            return strb.ToString();
 

botovod

Client
Регистрация
04.04.2014
Сообщения
170
Благодарностей
126
Баллы
43
(?<=\ |^).{0,50}(?=\ |$)
 

eldar

Client
Регистрация
01.07.2011
Сообщения
227
Благодарностей
14
Баллы
18
здравствуйте, подскажите регулярку для замены разрыв_строки,энтера на табуляцию?
 

eldar

Client
Регистрация
01.07.2011
Сообщения
227
Благодарностей
14
Баллы
18

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
(\r\n|\n) менять на {-String.Tab-}
 
  • Спасибо
Реакции: eldar

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
Уважаемый ТС, подскажите, как описать одной регуляркой замену в тексте кириллицы а на {a|а} (одна латинская другая наша) таким же макаром - с р у е х о В С А О К Х
спасибо!
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
Код:
string text = "провЕрочный Текст";
string[] ruslowt = {"а","е","о","р","с","у","х"};
string[] rusupt = {"А","В","Е","К","М","Н","О","Р","С","Т","У","Х","Ь"};
string[] latlowt = {"a","e","o","p","c","y","x"};
string[] latupt = {"A","B","E","K","M","H","O","P","C","T","Y","X","b"};
for (int i = 0; i < ruslowt.Length; i++)
    text = text.Replace(ruslowt[i], "{"+ruslowt[i]+"|"+latlowt[i]+"}");
for (int i = 0; i < rusupt.Length; i++)
    text = text.Replace(rusupt[i], "{"+rusupt[i]+"|"+latupt[i]+"}");

return text;
 

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
Спасибо! А возможно сделать, чтобы "Проверочный текст" подгружался из переменной?)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
string text = project.Variables["var"].Value;

вместо первой строки
var - имя переменной
 

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
Спасибо.
 

abuser

Client
Регистрация
02.06.2010
Сообщения
223
Благодарностей
16
Баллы
18
Подскажите пожалуйста, как спарсить все название и описание вот отсюда http://subscribe.ru/catalog/woman/relation

Запарился уже с регуляркой. вот (?<=<h2>([\S\s]*)<a\ href([\s\S]*))[\w\W]*?(?=</p>([\S\s]*)<div\ class="act">)
Что исправить надо?
Чтоб получить все 50 названий и описаний? :be:
Побояню - можно сделать так было бы одной регуляркой, и брать соответственно строки - 1-я заголовок, вторая-текст-описание :
(((?<=<h2>.*\r\n<a href="\/catalog\/.*?">(<b>)*?).*(?=(</b>)*?</a>))|((?<=<div class="content">\r\n<p>).*(?=</p>\r\n</div>)))
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
у вас конструкция регулярки ИЛИ
и то и другое она не спарсит.
 

abuser

Client
Регистрация
02.06.2010
Сообщения
223
Благодарностей
16
Баллы
18
у вас конструкция регулярки ИЛИ
и то и другое она не спарсит.
Она парсит в формате
0. название1
1. текст1
2. название2
3. текст2
и т.д. брать результат регекспа до 99 , класть в таблицу\список .. и далее делать что угодно .. Это как вариант для таких людйе как я, которые в программировании на шарпе ни бум-бум ))
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Подскажите плиз кто-нить регулярку для
/upload/iblock/ab4/ab4f41b7e262aa5eeb0a3f767e695f27.jpg
нужно получить:
ab4f41b7e262aa5eeb0a3f767e695f27.jpg
а то туплю чего-то.
Заранее спасибо.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
(?<=/)[^/]+$
 
  • Спасибо
Реакции: Severip

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
Ещё варик )
((?!/).)+$
 
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Спасибо!
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Еще подобный вопрос возник.
Есть список цен, которые нужно привести к виду, т.е.
3172

2343
0
2039
а надо:
3172,00

2343,00

2039,00
Какой регуляркой можно выцепить строку с ценой и добавить к ней ,00 ?
Как убить нули в строчках, где они есть, не повредив другие строки?
Спасибо.
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Точнее 0 не надо убивать, а привести его тоже к виду: 0,00
 

Artproma

Client
Регистрация
01.07.2014
Сообщения
63
Благодарностей
3
Баллы
8
Пытаясь разобраться как парсить сразу в таблицу нашел тут пример. Дабы все понять начал тестировать.
Создал проект и повторил вкратце все. Но у меня косяк, посмотрите, что я не так сделал?
https://www.dropbox.com/s/q8039z6a8v5n9wd/parsing-table-test.xmlz?dl=0
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
C#:
var html = project.Variables["dom"].Value;
var lst = project.Lists["Список"];
string pattern = "(?<=<div\\ class=\"entry\\ fullentry\">)[\\w\\W]*?<div\\ class=\"act\">"; // регулярка для div'a
var matches = Regex.Matches(html,pattern);
foreach (Match match in matches)
{
var mar = match.Value;
    string zagolovok = Regex.Match(mar, "(?<=<b>)[\\w\\W]*?(?=</b></a>)").Value;
    if (zagolovok == "")
    {
        var buff = Regex.Match(mar, "(?<=<h2>\\d{1,5})[\\w\\W]*?</h2>").Value;
        zagolovok = Regex.Match(buff, "(?<=[>])[^<>]+(?=[<])").Value.Trim();
    }
    string opisanie = Regex.Match(mar,"(?<=<div\\ class=\"content\">)[\\w\\W]*?(?=</div>)").Value.Replace("<p>","").Replace("</p>","");
    lst.Add(zagolovok+";"+opisanie); // в список кидаем Заголовок;Описание
}
    
return "Все прошло успешно";
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)