Регулярные выражения на все случаи жизни

Сделал вот так: ([\.|\?|\!][^A-Z].*|[\.|\?|\!]\s+[^A-Z].*).
 
Доброго времени суток коллеги :-) просидел честно полдня в гугле и не нашел как мне кажется простой regex как взять из строки символ по счету. Например строка: 9876 как взять первую цифру понятно ^. и с последней понятно .$ можно и на список разбить и потом брать по строкам но это лишние движения, а как взять вторую и третью по отдельности, не понял. По логике понимаю что задачка простая, но все что находил это или между символами, или {2} несколько подряд и т.д. Господа, не сочтите за труд, одскажите решение плиз
 
Доброго времени суток коллеги :-) просидел честно полдня в гугле и не нашел как мне кажется простой regex как взять из строки символ по счету. Например строка: 9876 как взять первую цифру понятно ^. и с последней понятно .$ можно и на список разбить и потом брать по строкам но это лишние движения, а как взять вторую и третью по отдельности, не понял. По логике понимаю что задачка простая, но все что находил это или между символами, или {2} несколько подряд и т.д. Господа, не сочтите за труд, одскажите решение плиз
(?<=^.{2}).
 
  • Спасибо
Реакции: Sergodjan и sistemanipel
Подскажите, как вставить запятую в цифры, после второго символа?
 
Подскажите, как вставить запятую в цифры, после второго символа?

72574
 
  • Спасибо
Реакции: upravlenie
Подскажите плиз, как вытащить PK за одно действие регуляркой

Имеем: Country: Pakistan (PK)
Статично "Country: " а дальше уже может быть другое значение и получить нужно то что в ()
Таких строк много, но нужно именно в строке Country


Как правильно указать, что Pakistan может быть любым словом
(?<=Country:\ Pakistan\ \().*(?=\))
 
Подскажите плиз, как вытащить PK за одно действие регуляркой

Имеем: Country: Pakistan (PK)
Статично "Country: " а дальше уже может быть другое значение и получить нужно то что в ()
Таких строк много, но нужно именно в строке Country


Как правильно указать, что Pakistan может быть любым словом
(?<=Country:\ Pakistan\ \().*(?=\))

вот еще с ключом Country https://regex101.com/r/9SKjzD/1
 
  • Спасибо
Реакции: Sergodjan и deskuznetsov
Подскажите плиз, как вытащить PK за одно действие регуляркой

Имеем: Country: Pakistan (PK)
Статично "Country: " а дальше уже может быть другое значение и получить нужно то что в ()
Таких строк много, но нужно именно в строке Country


Как правильно указать, что Pakistan может быть любым словом
(?<=Country:\ Pakistan\ \().*(?=\))
Попробуйте так: (?<=Country:\ .*?\ \().*?(?=\))
 
  • Спасибо
Реакции: deskuznetsov

вот еще с ключом Country https://regex101.com/r/9SKjzD/1
Огромное спасибо! Вторая регулярка помогла. (первая находила значения и в лишних строчках)

Попробуйте так: (?<=Country:\ .*?\ \().*?(?=\))
Спасибо! Тоже работает
 
Добрый день. Подскажите, пожалуйста регулярку, чтобы можно было или брать требуемый текст от слова до тэга, следующего за искомым текстом. При этом между словом и требуемым текстом может находиться рандомное количество тэгов и пробелов в различных вариациях. Либо, удалять тэги с пробелами между словом и необходимым текстом и уже потом выцеплять нужный текст между словом и следующим за текстом тэгом. Пример исходника:
HTML:
Развернуть Свернуть Копировать
Имя актрисы </span></span> <span class="post-b">Cynthia Rothrock</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Название ролика </span></span> <span class="post-b">Queen of the Martial Arts</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Номер на сайте </span></span> <span class="post-b">v8292</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Подсайт и сайт </span></span> <span class="post-b">https://www.youtube.com/</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Год производства </span></span> <span class="post-b">2010 г.</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Жанр </span></span> <span class="post-b">Action, Drama</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Продолжительность </span></span> <span class="post-b">002442</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Описание </span></span> <span class="post-b">The Best Squad, a 1988 film watch online in high quality. After training at the police academy, where the beauties constantly kick the ears of arrogant men, they begin to perform...</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Тип HD видео </span></span> <span class="post-b">1080p</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Видео </span></span> <span class="post-b">Windows Media Video 9 1920x1080 29.97fps 8000Kbps</span></div> <div class="post-align" style="text-align center;" data-placement="center"><span style="color #1532EF;"><span class="post-b">Аудио </span></span> <span class="post-b">Windows Media Audio 44100Hz stereo 96Kbps</span></div> <span class="post-hr"><hr align="left"></span> <div class="post-align" style="text-align center;" data-placement="center">
Допустим, нужен текст:
The Best Squad, a 1988 film watch online in high quality. After training at the police academy, where the beauties constantly kick the ears of arrogant men, they begin to perform...
Между словом Описание и тэгом </span>. Сейчас я делаю следующим образом, регуляркой:
((?i)(описание|<.*?>\s*description|информация))\s*<.*?>
в цикле удаляю по одному все тэги между словом и текстом, а потом через регекс получаю текст регуляркой:
((?i)(Описание)).*?(?=(<.*?>))
Но это очень долго, да и сама программа подтормаживает от таких выражений. Может быть есть более изящное решение? Буду очень благодарен за подсказки.
 
Последнее редактирование модератором:
Но это очень долго, да и сама программа подтормаживает от таких выражений. Может быть есть более изящное решение? Буду очень благодарен за подсказки.
Если я правильно понял задачу. Первым кубиком берем блок текста, внутри будут теги, вторым действием удаляем эти теги и получаем чистый текст.
1-ая рег-ка: (?i)(?<=описание|информация|description).*?(?=</span></div>)
2-ая рег-ка: <.*?>

72722
 
  • Спасибо
Реакции: mEdvEd71
Сейчас это выражение: ((?i)(описание|<.*?>\s*description|информация))\s*<.*?> находит слово и первый тэг: Описание </span> и помещает в переменную, которую проверяет кубик if. Я заменяю Описание </span> на: Описание. Если переменная не пустая, регулярка повторяется и помещает слово со вторым тэгом: Описание </span> в переменную. Описание </span> опять заменяется на: Описание, переменная не пустая, регулярка снова повторяется и берет слово с третьим тэгом: Описание <span class="post-b">. Описание <span class="post-b"> заменяется на Описание, регулярка выполняется еще раз. Потом тэгов уже нет:
Описание The Best Squad, a 1988 film watch online in high quality. After training at the police academy, where the beauties constantly kick the ears of arrogant men, they begin to perform...</span>
переменная пустая, кубик if перебрасывает на кубик regex с регуляркой: ((?i)(Описание)).*?(?=(<.*?>)), которая берет текст между словом и тэгом после текста. Можно ли как-то или сразу парсить текст, не учитывая тэги между словом и нужным текстом или как-то одним действием удалить эти тэги, чтобы они не мешались, а потом уже спарсить то, что нужно?
 
Можно ли как-то или сразу парсить текст, не учитывая тэги между словом и нужным текстом или как-то одним действием удалить эти тэги, чтобы они не мешались, а потом уже спарсить то, что нужно?
Я привел такой вариант, всего 2 действия без циклов.
Не подошло? https://zennolab.com/discussion/thr...enija-na-vse-sluchai-zhizni.20829/post-598784
 
  • Спасибо
Реакции: mEdvEd71
Прошу прощения. Я просто подумал, что Вы уточняли, поэтому дополнительный пост написал.:-) Буду пробовать.
 
А, если будут тэги не </span></div>, а например: </span></span> или </span><span class="post-br">, то эта регулярка: (?i)(?<=описание|информация|description).*?(?=</span></div>) ведь уже не сработает? Они постоянно варьируются, нужно что-нибудь универсальное, чтобы захватывало текст между словом и любым тэгом после этого текста.
 
Вот такие тексты, для примера, можно как-то брать одной регуляркой?
Описание</span> Taxi Driver is a 1976 American psychological thriller film directed by Martin Scorsese, written by Paul Schrader, and starring Robert De Niro, Jodie Foster, Cybill Shepherd, Harvey Keitel, Peter Boyle, Leonard Harris, and Albert Brooks. Set in a decaying and morally bankrupt New York City following the Vietnam War, the film follows Travis Bickle, a taxi driver and veteran, and his mental state as he works nights in the city.<span class="post-br"></span><span class="post-b">

Описание</span> Each driver has his own order! Previously, the same order could come to several drivers, but the new distribution algorithm has been solved. Now you don't have to worry that someone else will be faster and intercept a bargain order. One trip - one driver, everything is clear and clear. Translated. See All. <br><span class="post-br"></span><span class="post-b">

Описание</span> Apocalyptica are true explorers, always seeking new frontiers and uncharted territories in which to express themselves. With Cell-0 , their 9th studio album, the ambitious and electric quartet have not simply returned to their non-vocal roots, they have traveled deeper and further into the universe of instrumental music than ever before. ... Georgia and The South Sandwich Islands Spain Sri Lanka Sudan Suriname Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand <div class="post-align" style="text-align center;" data-placement="center">
 
Еще хотел спросить. Вот эта регулярка <.*?> ищет все тэги. А как тогда будет выглядеть выражение поиска любых символов за исключением тэгов? Так: [^<.*?> ] ? Например, нужно найти все тэги от Описание до первого не тэга, такое выражение возможно как-то составить?

Описание</span> <br></span><span class="post-b"> Each driver has his own order! Previously, the same order could come to several drivers, but the new distribution algorithm has been solved. Now you don't have to worry that someone else will be faster and intercept a bargain order. One trip - one driver, everything is clear and clear. Translated. See All. <br><span class="post-br"></span><span class="post-b">
 
И как найти только те тэги, которые находятся в тексте? Например:

Описание</span> <br></span><span class="post-b"> Each driver has his own order! <img class="smile" src="//static.zennolab.net/smiles/icon_cool.gif" alt=":cool:" align="absmiddle" border="0" />Previously, the same order could come to several drivers, but the new distribution algorithm has been solved. <br>Now you don't have to worry that someone else will be faster and intercept a bargain order.<br> One trip - one driver, everything is clear and clear. <br>Translated. See All. <br><span class="post-br"></span><span class="post-b">.
 
mEdvEd71 Если такая разноплановая верстка, привязаться будет сложно.
Приложил пример шаблона универсального извлечения описания.
Первым действием задаем критерий минимального кол-ва символов в строке, которое нужно забрать. Если описания дорстаточно длинные, то можно оставить пока 50, как задано в примере. Вторым действием убираем все html-теги. Третьим действием - производим взятие описания.

72756
 

Вложения

  • Спасибо
Реакции: mEdvEd71
Благодарю Вас. А можно в xml шаблон? Количество символов, которые нужно брать тоже разное. К примеру:
date: 31.10.2009
date: 31 october 2009
date: 2009
genre: feature film, action, adventure, drama
genre: feature film, action
genre: drama
cast: Robert De Niro, Jodie Foster, Cybill Shepherd, Harvey Keitel, Peter Boyle, Leonard Harris
cast: Robert De Niro, Jodie Foster
cast: Jodie Foster
description: Taxi Driver is a 1976 American psychological thriller film directed by Martin Scorsese, written by Paul Schrader, and starring Robert De Niro, Jodie Foster, Cybill Shepherd, Harvey Keitel, Peter Boyle, Leonard Harris, and Albert Brooks. Set in a decaying and morally bankrupt New York City following the Vietnam War, the film follows Travis Bickle, a taxi driver and veteran, and his mental state as he works nights in the city.
description: Taxi Driver is a 1976 American psychological thriller film.
description: Taxi Driver is a 1976 American psychological thriller film directed by Martin Scorsese.
 
Благодарю Вас. А можно в xml шаблон? Количество символов, которые нужно брать тоже разное.
Приложил: извлечение описания-1.xmlz
В качестве критерия кол-ва символов, можно например попробовать использовать число 100 или 150. Думаю, что описания в основной массе будут более длинными.

Также прикрепил еще один вариант шаблона, в котором без заранее заданного количественного критерия просто берется самая длинная текстовая строка, как претендент на описание: извлечение описания-2.xmlz В этом варианте все строки кладутся в таблицу, вычисляется символьная длина каждой строки и таблица сортируется по убыванию кол-ва символов и потом берется самая первая строка, соотв. самая длинная (она же - описание).
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: mEdvEd71
C#:
Развернуть Свернуть Копировать
(?<!\S)\d(?!\S)
поиск однозначного числа, очень долго искал наконец нашлось решение
 
Ребята, беру строку из файла txt, нужно обработать только два значения перед разделителем ; в переменные отдельные, остальные значения после разделителя запихнуть в одну переменную.
Пример

1;2;3;4


должно получится так
переменная 1 = 1
переменная 2 = 2
переменная 3 = 3;4
 
Ребята, беру строку из файла txt, нужно обработать только два значения перед разделителем ; в переменные отдельные, остальные значения после разделителя запихнуть в одну переменную.
Пример

1;2;3;4


должно получится так
переменная 1 = 1
переменная 2 = 2
переменная 3 = 3;4
Можно двумя стандартными действиями, без регулярок:

73116
 
Последнее редактирование:
  • Спасибо
Реакции: udder
Можно двумя стандартными кубиками:

Посмотреть вложение 73116
Вариант отличный, но я не знаю как предусмотреть, если в строке 5 раздетелей, а в другой 4 разделителя

1;2;3;4;5
1;2;3;4

Мне главное брать 1;2 в и раскладывать в переменные, остальные хвосты в другую переменную.
 
Последнее редактирование:
Вариант отличный, но я не знаю как предусмотреть, если в строке 5 раздетелей, а в другой 4 разделителя

1;2;3;4;5
1;2;3;4

Мне главное брать 1;2 в и раскладывать в переменные, остальные хвосты в другую переменную.
Если по-быстрому, без регулярок все же, то можно через список.
То есть кладем в список, берем первые две строки с удалением в переменные var1 и var2, а остальное содержимое списка объединяем с разделителем ; в переменную var3.

73118
 
Последнее редактирование:
  • Спасибо
Реакции: udder
Подскажите пожалуйста, нужно спарсить ссылку такого вида "https://site.com/register/dfj9DJ5Hfhf4j5"

Домены бывают разные, в конце тоже набор букв-цифр разный, хотелось бы, что бы регулярка искала по кавычкам в начале и в конце и по признаку в середине /register/ именно со слэшем в конце и начале, возможно такое?
 
Подскажите пожалуйста, нужно спарсить ссылку такого вида "https://site.com/register/dfj9DJ5Hfhf4j5"

Домены бывают разные, в конце тоже набор букв-цифр разный, хотелось бы, что бы регулярка искала по кавычкам в начале и в конце и по признаку в середине /register/ именно со слэшем в конце и начале, возможно такое?
Есть универсальная регулярка из почтового экшена в ПМ: (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])? Очень хорошо подходит для поиска подобных ссылок.

74086
 
  • Спасибо
Реакции: igoreff и one
Спасибо, но проблема в том, что там еще куча ссылок бывает и не всегда номер совпадения одинаковый, поэтому и хотелось что б понадежнее, именно по признаку /register/ искать.
 

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