Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Уставший2010
Member

Откуда:
Сообщений: 328
Добрый день!

Регулярные выражения: как определить, что в строке находятся символы только латинского алфавита
12 авг 11, 11:50    [11108538]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Edd.Dragon
Member

Откуда: Украина
Сообщений: 6963
Уставший2010,

да это же в любом учебнике/мануале по регуляркам пишут

/^[A-Za-z]+$/ или /^[A-Za-z]*$/
12 авг 11, 11:52    [11108556]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Уставший2010
Member

Откуда:
Сообщений: 328
Edd.Dragon
Уставший2010,

да это же в любом учебнике/мануале по регуляркам пишут

/^[A-Za-z]+$/ или /^[A-Za-z]*$/

Спасибо!

А если строка должна содержать только латинские буквы или цифры?

Как проверить на цифры я знаю, только не могу соединить условия
12 авг 11, 12:11    [11108757]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Уставший2010,

where regexp_substr(str,'[^a-zA-Z0-9]') is null
12 авг 11, 12:19    [11108810]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
SysOper
Member

Откуда: M
Сообщений: 9760
Уставший2010,

Поиском пользоваться еще не научился?
12 авг 11, 12:19    [11108812]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Уставший2010
Добрый день!

Регулярные выражения: как определить, что в строке находятся символы только латинского алфавита

и вообще, регулярные выражения тут не обязательны не нужны
12 авг 11, 12:47    [11109062]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
100500
Member

Откуда:
Сообщений: 124
Уставший2010
А если строка должна содержать только латинские буквы или цифры?


.. where rtrim(lower(:string),'abcdefghijklmnopqrstuvwxyz0123456789') is null
12 авг 11, 13:49    [11109536]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
100500
Уставший2010
А если строка должна содержать только латинские буквы или цифры?


.. where rtrim(lower(:string),'abcdefghijklmnopqrstuvwxyz0123456789') is null

select rtrim(lower('вапаabsаывпывпbdjasfbsjasфыфы'),'abcdefghijklmnopqrstuvwxyz0123456789') from dual

вапаabsаывпывпbdjasfbsjasфыфы
?
12 авг 11, 14:05    [11109696]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
100500,

select translate('0аa1бb3цc4дd5еe6фf7гg8хh','аabcdefghijklmnopqrstuvwxyz01234567890','а') s from dual;
12 авг 11, 14:08    [11109724]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
NETClient
Member

Откуда:
Сообщений: 461
Alexander Konakov
100500
пропущено...


.. where rtrim(lower(:string),'abcdefghijklmnopqrstuvwxyz0123456789') is null

select rtrim(lower('вапаabsаывпывпbdjasfbsjasфыфы'),'abcdefghijklmnopqrstuvwxyz0123456789') from dual

вапаabsаывпывпbdjasfbsjasфыфы
?

А что не так?
12 авг 11, 14:13    [11109769]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
NETClient,

А что "так"? Латинские буквы в середине строки как были - так и остались.
12 авг 11, 14:17    [11109803]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
NETClient
Member

Откуда:
Сообщений: 461
Alexander Konakov
NETClient,

А что "так"? Латинские буквы в середине строки как были - так и остались.

Еще раз: что не так?
12 авг 11, 14:20    [11109826]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
NETClient
Alexander Konakov
NETClient,

А что "так"? Латинские буквы в середине строки как были - так и остались.

Еще раз: что не так?

Мож я чего не понимаю, но... чтобы проверить, что строка содержит только латиницу и цифры, нужно
1. удалить из неё все буквы латиницы и цифры
2. посмотреть, получилась ли пустая строка

rtrim удаляет символы или последовательности символов только справа.
12 авг 11, 14:24    [11109874]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
Уставший2010
как определить, что в строке находятся символы только латинского алфавита


Alexander Konakov
Латинские буквы в середине строки как были - так и остались


NETClient
Еще раз: что не так?


Что-то, невнимательность спрашивающего.
12 авг 11, 14:25    [11109890]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
env
Что-что
12 авг 11, 14:26    [11109893]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
NETClient
Member

Откуда:
Сообщений: 461
Alexander Konakov
Мож я чего не понимаю

Ну сделай тест-кейс на варианте 100500, может допоймешь.
12 авг 11, 14:27    [11109902]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
100500
Member

Откуда:
Сообщений: 124
Alexander Konakov
Мож я чего не понимаю, но... чтобы проверить, что строка содержит только латиницу и цифры, нужно
1. удалить из неё все буквы латиницы и цифры
2. посмотреть, получилась ли пустая строка

rtrim удаляет символы или последовательности символов только справа.

1 - зачем все? достаточно правые. Если она состоит только из латиницы и цифр, то результат будет пустой
12 авг 11, 14:28    [11109917]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
NETClient,

упс, был неправ. звиняйте, дядько
12 авг 11, 14:30    [11109940]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
невнимательность
Guest
env,

where rtrim(lower(:string),'abcdefghijklmnopqrstuvwxyz0123456789') is null
12 авг 11, 14:30    [11109947]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
100500, NETClient - правда ваша.
12 авг 11, 14:31    [11109953]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
невнимательность,

типа, добивание дежачего?
12 авг 11, 14:32    [11109956]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
невнимательность
Guest
env,

нет. долго постил ответ :)
12 авг 11, 14:36    [11110010]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
имхо тут избегать регэкспов не нужно, по скорости даже если и будет выигрыш, то не настолько большой, чтобы настолько ухудшать читабельность
+
DB11G/XTENDER> select count(*) from tind where regexp_substr(tr,'[^a-zA-Z0-9]') is null;

  COUNT(*)
----------
      2457

1 row selected.

Elapsed: 00:00:00.19
DB11G/XTENDER> select count(*) from tind where rtrim(lower(tr),'abcdefghijklmnopqrstuvwxyz0123456789') is null;

  COUNT(*)
----------
      2457

1 row selected.

Elapsed: 00:00:00.23
12 авг 11, 15:06    [11110345]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
NETClient
Member

Откуда:
Сообщений: 461
xtender,

5 бабушек - уже рубль.
12 авг 11, 15:08    [11110356]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения: как определить, что в строке находятся символы только латинского алф  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Хотя не так... зависит от того какие данные. Если строки длинные и шанс встретить в первых(последних) символах неподходящие символы высок, то - да лучше с rtrim/ltrim
12 авг 11, 15:09    [11110366]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить