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мя скобками и одной) не получается. Хоелось бы все в одном выражении, т.к. по другому могбы в несколько этапов сделать но не красиво будет.. icon_smile.gif
цитата
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
2bleed:
я првильно понял, sotiris написал то что ты хотел?

2Teacher-X:
чет не понял фразы "проверить соответствие вложенных скобок друг-другу" обьсни плз
цитата
04/09/07 в 10:55
 bleed
DelGod писал:
2bleed:
я првильно понял, 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)

если еще что-то то - говори, выход думаю есть.


Эта страница в полной версии