С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354
|
Добавлено: 03/09/07 в 13:24 |
Чет я бошку уже убил не выходит так как надо.
строки типа:
"DATA NAME (data type (data_type_2)) - 5"
"DATA NAME (data type) - 5"
надо извлеч
data type (data_type_2)
data_type
еслиб был один вариант то проблем нет, а с двумя видами строк(с 2мя скобками и одной) не получается. Хоелось бы все в одном выражении, т.к. по другому могбы в несколько этапов сделать но не красиво будет..
|
|
|
|
С нами с 30.05.03
Сообщения: 2173
Рейтинг: 1141
|
Добавлено: 03/09/07 в 14:05 |
ну если я правильно задание понял и выражения встречаются только в таком виде, то вот так работает для перла.
$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";
|
|
|
|
С нами с 27.06.07
Сообщения: 289
Рейтинг: 247
|
Добавлено: 03/09/07 в 22:58 |
К сожалению, посредством регулярных выражений нельзя проверить соответствие вложенных скобок друг-другу, не мучайтесь, это невозможно. Таки придеться делать в два этапа :(
|
|
|
|
С нами с 08.03.05
Сообщения: 114
Рейтинг: 118
|
Добавлено: 04/09/07 в 00:10 |
2bleed:
я првильно понял, sotiris написал то что ты хотел?
2Teacher-X:
чет не понял фразы "проверить соответствие вложенных скобок друг-другу" обьсни плз
|
|
|
|
С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354
|
Добавлено: 04/09/07 в 10:55 |
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:
походу прийдется делать в неск этапов.(((
|
|
|
|
С нами с 08.03.05
Сообщения: 114
Рейтинг: 118
|
Добавлено: 04/09/07 в 12:01 |
@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)
если еще что-то то - говори, выход думаю есть.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |