Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Регулярные выражение в MYSQL ?

Всем привет,

Мне нужно использовать регулярное выражение preg_replace если это возможно в MYSQL ?

База установленна на тестовом ПК, на Денвере.

Нужно использовать при замене регулярные выражение, как это лучше сделать ?

Спасибо
Ответ:

У MySQL нет функций поиска и замены по регулярному выражению.
Вопрос: Запросы на регулярные выражения

Всех приветствую.
Хотелось бы чтобы какой нибудь доброжелатель помог в реализации запросов. Я почти все что надо было сделал, остались только вот эти непостижимые для моего самостоятельного разума запросы. Тема - мои нелюбимые регулярные выражения.

1. Создать запрос для выделения повторяющихся, стоящих рядом слов
я написал вот так вот:
undefine val;
select regexp_substr('&&val', '(([^ ]{2,}) \2( |,|$))', 1, level) result
from dual
connect by level < length('&&val');

оно даже работает вся проблема в том что запрос должен находить ВСЕ стоящие рядом слова а не только два как срабатывает тут
т.е. строка
one one one two
должно вывести
one one one

2. Создать запрос для выбора из текста дробных чисел с разделителем дробной части в виде точки. Тройки цифр целой и дробной части могут отделяться пробелом или запятой. Совместное использование разных разделителей не допускается.
я даже не очень понимаю задание поэтому я вообще ничего не сделал тут

3. Создать запрос для определения в тексте цифр, за которыми не стоит знак +.
ммм есть кое что но работает не правильно...
что то с функцией регулярного выражения (возможно она вообще не та)
undefine str
select substr(regexp_substr('&&str', '([[:digit:]]{1,}([^\+]|$))'), level, 1)
from dual
connect by level <= length('&&str');
Ответ: Может я немного и опоздал, но все же отвечу на первые два вопроса (ибо лучше поздно, чем никогда).
1. Немного модифицировал ваше выражение ([^\ ]+)(\ \1)+ Теперь выделяет неограниченное количество рядом стоящих, совпадающих слов.
2. Вот регулярное выражение для второй задачи (\d+[\ ,]?)+\.\d+
Может кому в будущем будет полезно.
Вопрос: Особенности регулярных выражений в MS SQL Server

Есть список путей к файлам изображений, что-то вроде
C:/Img/001/00345634.jpg
C:/Img/001/00342630.jpg
C:/Img/001/00345632.jpg
C:/Img/001/00345632_1.jpg
C:/Img/001/00345632_1A2.jpg
C:/Img/001/00345632_.jpg
и т.д.

Как видно, часть путей выглядит следующим образом (имеет "_" и цифры перед .jpg):
C:/Img/001/00345632_1.jpg
C:/Img/001/00345632_1A2.jpg
C:/Img/001/00345632_.jpg
C:/Img/001/00345632_14.jpg
C:/Img/001/00345632_b7.jpg

Мне необходимо выделить те строки, которые имеют "_" и далее могут быть цифры или буквы, а могут и не быть, и в конце .jpg. (то есть например должно быть в конце либо _14.jpg либо _1A2.jpg либо просто _.jpg )

Я пытаюсь прописать следующее регулярное выражение, но оно почему-то не работает! Помогите пожалуйста!


Несколько вопросов:
1) ПОЧЕМУ НЕ РАБОТАЕТ '%[_]([0-9|a-z|A-Z])*.jpg%'' ???

(Тогда как без * -- '%[_][0-9|a-z|A-Z|].jpg%' -- срабатывает, но не выдает записи типа _.jpg (просто черточка пере .jpg без цифр или букв))


2) Предложите пожалуйста свой вариант регулярного выражения для моей задачи!

3) Как в SQL Server обозначить логику "один или более раз", {1,} - не срабатывает,
"ноль или более раз" * не срабатывает, или я что-то путаю?
Ответ:
Сообщение от ribastar
или я что-то путаю?
Угу. В MSSQL нет регулярных выражений.
А про синтаксис и возможности LIKE можно прочитать в документации.
Вопрос: регулярные выражения и цифры.

задача состоит в том, чтоб отсеять телефонные номера. Т.е. есть поля " Номер ОТ" и "Номер ДО" и нужно вывести номера телефонов от "Номера ОТ" до "Номера ДО". "Номер от" может задаваться например так: 180* и должны вывестись телефонные номера от 180000 и дальше по порядку. Т.е. мне нужно как-то реализовать регулярные выражения с числами, а не текстом. У меня поле "номер" числовой. Как такую штуку реализовать?
Ответ:
relav
Т.е. мне нужно как-то реализовать регулярные выражения с числами, а не текстом.


А конвертировать число в строку никак? Или в чёт тут проблема?
Вопрос: Регулярные выражения для поиска

Возможно сделать регулярное выражение для поиска вот такой задачи: "В таблице имеется три значение '123', '12' и '1'. В поиске задано 3 цифры при поиске '123' возвращается '123', при поиске' 124' возвращает '12', при поиске '133' вернуть '1'?
Ответ:
Сообщение от Elbeet
Надо вернуть одну из 3-х записей из таблицы?
да да, большое спасибо
Вопрос: Запрос SQL/ использование регулярных выражений

Здравствуйте всем!

Если возможно, подскажите, пожалуйста: не получается правильно решить следующие две задачи на использование регулярных выражений:

Задача 1.

Дана таблица из двух столбцов ACTION и CODE, в
каждом из которых хранятся списки чисел, разделённых пробелами. Создать запрос для разделения данных.

Например, для таблицы:

ACTIONCODE
1000 1100 900 841000 841100 841111
700 500 400 923400 923411


Результат должен быть:

N_LIST N_POS ACTION CODE
101000 1100 900 841000 841100 841111
11000841000
21100841100
3900841111
20700 500 400923400 923411
1700923400
2500 923411
3 400


В результате выборки приняты обозначения: N_LIST —
порядковый номер списка в исходной таблице, N_POS —
порядковый номер числа в списке.

Буду очень признательна за помощь))


И задача 2 тоже на использование регулярных выражений и тоже с числами):

Создать запрос для выбора из текста дробных чисел с разделителем дробной части в виде точки.
Тройки цифр целой и дробной части могут не отделяться или отделяться пробелом или запятой.
Совместное использование разных разделителей не допускается.


Спасибо заранее))
Марина
Ответ: ты больше года жил с глухой обидой за Карлоса... но не смог все же переварить это и поэтому выплеснул

зы
мы не на форуме кандидатов в машинистки, можно не демонстрировать столь феноменальную производительность.
Вопрос: Regex, нужно вывести элементы соответствующих шаблону регулярного выражения

Здравствуйте, мне нужно нужно вывести элементы соответствующих шаблону регулярного выражения, сейчас использую библиотеку Regex, полезная в регулярных выражениях, но к сожалению в ней только нет вывода именно этих элементов
Ответ: Ваша трудность заключается в чем: найти эти значения или вывести в лабел?

Если первое - то обращайтесь за помощью к разработчикам этой библиотеки.

Если вывести - то

Visual Basic
1
Me.ИмяВашейlabel.Caption = найденное значение
Вопрос: regexp в Oracle. Помощь с написанием регулярного выражения.

Добрый день.

Из таблицы выбираются строки вида '(4) бла-бла-бла (238)' или '(бла-бла-бла) (каб.5)' и т.д. Общее у всех результатов, что в последних(возможно, что и единственных) скобках есть одна или более следующих друг за другом цифр.

Задача: написать регулярное выражение, которое вычленяло бы эту группу цифр из последних скобок.
Хотелось бы это сделать одним REGEXP_SUBSTR.

Что сделано:
1) так как количество символов в последних скобках вместе с самими скобками у меня заведомо менее 10 символов, а предыдущее выражение в скобках в этой строке при ее наличии занимает более 10 символов, то для того, чтобы в выдачу попадали только последние скобки, я вырезаю последние 10 символов из строки и запускаю regexp только по ней. Знаю, что некрасиво, но как по другому я не могу придумать.
2) ниже я привожу выражение, которое возвращает мне весь текст, причем вместе со скобками. Я понимаю, что обернув результат этого выражения еще раз в REGEXP_SUBSTR и сделав поиск только по цифрам я приду к нужному мне варианту, но хотелось бы при возможности, обойтись одним
REGEXP_SUBSTR(substr(atv9.vardescr,length(atv9.vardescr)-9,10),'\(.+\d+\)')


К сожалению, в регэкспах не силен, поэтому и прошу у вас совета.
Заранее благодарен за любую помощь.
Ответ: Elic,

В некоторых случаях нет смысла усложнять без надобности пока не доказано обратное.
Вопрос: не работает регулярное выражение

здравствуйте!
выполняя скрипт сравниваю переменную,типа varchar, на соответствие регулярному выражению '[0-9]|[0-9][0-9]'. Ввожу программу строку 12 или 1 и программа ругается. Такое впечатление, что сервер не воспринимает знак ИЛИ (|). Почему? Привожу скрипт.
+
if (@ADRESS like '([0-9]|[0-9][0-9])')
     Raiserror('Введено верно',16,1);
   else
     raiserror('Введен недопустимый адрес',16,1);
Ответ:
relav
iap,

проверить параметр ip_address4
чтоб там не было символов.



тогда так

-- так
^\d{0,3}(\.\d{0,3}){3}$

-- или вообще так
^[\d\.]+$


зачем вам тогда регулярка?
Вопрос: Регулярные выражения sql (путь файла)

Всем доброго времени суток!
Требуется с помощью регулярных выражений (или, если есть другой вариант, то как-то по-другому) разбить путь файла на путь к папке и имя файла.
Например:
Исходная строка 'D:\Test\Test.sql'
Должно получиться что-то типа
D:\Test\ и Test.sql
Ответ:
Код T-SQL
1
2
3
4
5
6
7
8
declare @s varchar(100) = 'D:\Test\Test.sql';
 
select
 reverse(substring(a.s, b.p, 100000)),
 reverse(left(a.s, isnull(b.p - 1, 100000)))
from
 (select reverse(@s)) a(s) cross apply
 (select nullif(charindex('\', a.s), 0)) b(p);