powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вырезать строку между точками, REGEXP
7 сообщений из 7, страница 1 из 1
Вырезать строку между точками, REGEXP
    #36539439
=Nike=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго.
Запарился уже с этими регулярками, ничего не пойму.

Есть строки вида: 532.Perl v5.0.rar
Надо выдрать строку 'Perl v5.0'
условие: выбрать то, что между крайними точками. До первой точки и после последней может быть любое количество символов.
Все бы ничего, еслиб не возможность наличия точек в средней строке...

Начало и конец выбрал так:
Код: plaintext
1.
REGEXP_SUBSTR(name,'[^.]+$',  1 ,  1 )
REGEXP_SUBSTR(name,'[^.]+',  1 ,  1 )

а вот с серединой затык

пробую так
Код: plaintext
REGEXP_REPLACE(name,'[^\.]*\.(.*)\.','\1')
получается Perl v5.0rar
...
Рейтинг: 0 / 0
Вырезать строку между точками, REGEXP
    #36539497
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=Nike=Всем доброго.
Запарился уже с этими регулярками, ничего не пойму.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select regexp_replace('532.Perl v5.0.rar','^[^.]*\.(.*)\.[^.]*$','\1') from dual
   2   /

REGEXP_RE
---------
Perl v5. 0 

SQL> 

SY.
...
Рейтинг: 0 / 0
Вырезать строку между точками, REGEXP
    #36539517
=Nike=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно так. Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вырезать строку между точками, REGEXP
    #40093338
Br777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY
=Nike=Всем доброго.
Запарился уже с этими регулярками, ничего не пойму.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select regexp_replace('532.Perl v5.0.rar','^[^.]*\.(.*)\.[^.]*$','\1') from dual
  2  /

REGEXP_RE
---------
Perl v5.0

SQL> 



SY.
Подскажите пожалуйста, кто знает. Как вырезать строчку от последнего символа \ до последней точки? Например: C\data\br\text.cs.txt.elf
Получить: text.cs.txt
...
Рейтинг: 0 / 0
Вырезать строку между точками, REGEXP
    #40093339
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Br777
Подскажите пожалуйста, кто знает. Как вырезать строчку от последнего символа \ до последней точки? Например: C\data\br\text.cs.txt.elf
Получить: text.cs.txt

если точки не было, то что возвращать?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select str, regexp_substr(str,'([^\/]+)\.[^.]*$',1,1,null,1) res
from 
  (select 'C\data\br\text.cs.txt.elf' str from dual union all
   select '/data/br/text.cs.txt.elf' str  from dual union all
   select 'text.cs.txt.elf' str from dual union all
   select 'elf.' str from dual union all
   select 'elf' str from dual
   )

Код: plsql
1.
2.
3.
4.
5.
6.
7.
STR                       RES
------------------------- ------------------------
C\data\br\text.cs.txt.elf text.cs.txt
/data/br/text.cs.txt.elf  text.cs.txt
text.cs.txt.elf           text.cs.txt
elf.                      elf
elf                       NULL


так пойдет?
вкратце:

[^\/] -- не символы \ /
[^\/]+ -- один и более раз
([^\/]+) -- отмечаем что это группа
\.[^.]* -- точка, а после нее 0 или более раз не точка
$ -- конец строки

итого
([^\/]+)\.[^.]*$ -- жадно ищем группу символов (кроме \/), после которых идет точка, и потом 0 или более раз "не точки" в конце строки
...
Рейтинг: 0 / 0
Вырезать строку между точками, REGEXP
    #40093341
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select str, regexp_substr(str, '([^\/]+?)(\.[^.]*)?$',1,1,'i',1) s
from
  (select 'C\data\br\text.cs.txt.elf' str from dual union all
   select '/data/br/text.cs.txt.elf' str  from dual union all
   select 'text.cs.txt.elf' str from dual union all
   select 'elf.' str from dual union all
   select 'elf' str from dual
   )
;

STR                       S
------------------------- --------------------------------------------------------------------------------
C\data\br\text.cs.txt.elf text.cs.txt
/data/br/text.cs.txt.elf  text.cs.txt
text.cs.txt.elf           text.cs.txt
elf.                      elf
elf                       elf

SQL> 
...
Рейтинг: 0 / 0
Вырезать строку между точками, REGEXP
    #40093377
Br777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо! То что нужно!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вырезать строку между точками, REGEXP
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]