Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Помогите с регулярными выражениями
Новая тема
Ответить
цитата
03/09/07 в 13:24
bleed
Чет я бошку уже убил не выходит так как надо.
строки типа:
"DATA NAME (data type (data_type_2)) - 5"
"DATA NAME (data type) - 5"
надо извлеч
data type (data_type_2)
data_type
еслиб был один вариант то проблем нет, а с двумя видами строк(с 2мя скобками и одной) не получается. Хоелось бы все в одном выражении, т.к. по другому могбы в несколько этапов сделать но не красиво будет..
цитата
03/09/07 в 14:05
sotiris
ну если я правильно задание понял и выражения встречаются только в таком виде, то вот так работает для перла.
$str1="DATA NAME (data type (data_type_2)) - 5";
$str2="DATA NAME (data type) - 5";
$str1=~m/\((.+)\) /;
print "$1\n";
$str2=~m/\((.+)\) /;
print "$1\n";
цитата
03/09/07 в 22:58
Teacher-X
К сожалению, посредством регулярных выражений нельзя проверить соответствие вложенных скобок друг-другу, не мучайтесь, это невозможно. Таки придеться делать в два этапа :(
цитата
04/09/07 в 00:10
DelGod
2
bleed:
я првильно понял, sotiris написал то что ты хотел?
2
Teacher-X:
чет не понял фразы "проверить соответствие вложенных скобок друг-другу" обьсни плз
цитата
04/09/07 в 10:55
bleed
DelGod писал:
2
bleed:
я првильно понял, sotiris написал то что ты хотел?
не совсем, встречаются data name со скобками, пример:
DATA NAME (ex data name0) (data type (data_type_2)) - 5"
выдаст
(ex data name0) (data type (data_type_2))
а надо
(data type (data_type_2))
это я и имел ввиду когда говорил про скобки, тоже самое думаю и имел ввиду
Teacher-X:
походу прийдется делать в неск этапов.(((
цитата
04/09/07 в 12:01
DelGod
@text = ('DATA NAME (data type (data_type_2)) - 5',
'DATA NAME (data type) - 5',
'(ex data name0) (data type (data_type_2))');
foreach $key (@text) {
if ($key=~m/\((([^\(\)]*\()?[^\(\)]+type[^\(\)]*(\)[^\(\)]*)?)\)/) {
print "$1\n";
}
}
вход
'DATA NAME (data type (data_type_2)) - 5',
'DATA NAME (data type) - 5',
'(ex data name0) (data type (data_type_2))'
выход
data type (data_type_2)
data type
data type (data_type_2)
если еще что-то то - говори, выход думаю есть.
Новая тема
Ответить
Эта страница в полной версии