Реклама на сайте Advertise with us

Помогите с регулярными выражениями

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



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

0
 



С нами с 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";

5
 



С нами с 27.06.07
Сообщения: 289
Рейтинг: 247

Ссылка на сообщениеДобавлено: 03/09/07 в 22:58       Ответить с цитатойцитата 

К сожалению, посредством регулярных выражений нельзя проверить соответствие вложенных скобок друг-другу, не мучайтесь, это невозможно. Таки придеться делать в два этапа :(

5
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

Ссылка на сообщениеДобавлено: 04/09/07 в 00:10       Ответить с цитатойцитата 

2bleed:
я првильно понял, sotiris написал то что ты хотел?

2Teacher-X:
чет не понял фразы "проверить соответствие вложенных скобок друг-другу" обьсни плз

2
 



С нами с 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:
походу прийдется делать в неск этапов.(((

0
 



С нами с 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)

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

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »