Модераторы: ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод регулярного выражения на Java 
:(
    Опции темы
truffle
Дата 15.12.2010, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Помогите записать это выражение на java и понять как его читать?
$var=~s/^{[^}]*}//;
PM MAIL   Вверх
shamber
Дата 15.12.2010, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



эээээ, может в другой раздел форума?

Это сообщение отредактировал(а) shamber - 15.12.2010, 23:37
PM MAIL Jabber   Вверх
Logo
Дата 16.12.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 5
Всего: 10



Да. Перловый синтаксис здесь означает «заменить первое совпадение выражения "^{[^}]*}" на пустую строку». В Java способ применения регулярного выржения будет зависить от используемой библиотеки. Само выражение скорер всего не изменится (Perl Compatible если), но тоже зависит от библиотеки.
PM MAIL   Вверх
truffle
Дата 16.12.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Цитата(Logo @ 16.12.2010,  15:03)
Да. Перловый синтаксис здесь означает «заменить первое совпадение выражения "^{[^}]*}" на пустую строку». В Java способ применения регулярного выржения будет зависить от используемой библиотеки. Само выражение скорер всего не изменится (Perl Compatible если), но тоже зависит от библиотеки.

тогда еще вопрос, почему у меня скрипт:
   $var = 'gf^{[^}]*}hdfj';
   $var=~s/^{[^}]*}//;
   print $var;

выводит:

gf^{[^}]*}hdfj

те ничего не поменялось...
PM MAIL   Вверх
Logo
Дата 16.12.2010, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 5
Всего: 10



Код

$var=~s/\^{[^}]*}//;

?
PM MAIL   Вверх
truffle
Дата 16.12.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Цитата(Logo @ 16.12.2010,  15:37)
Код

$var=~s/\^{[^}]*}//;

?

gf]*}hdfj
PM MAIL   Вверх
alezzz
Дата 16.12.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Цитата(truffle @  16.12.2010,  15:56 Найти цитируемый пост)
Цитата(Logo @ 16.12.2010,  15:37)код Perl1:$var=~s/\^{[^}]*}//;highlightSyntax('perl_iYjVjY','perl');?gf]*}hdfj



Символ "^" в начале выражения - начало строки, а в квадратных скобках - указывает на символы, которые не должны входить в набор. Т.е. сначало совпал "^" как символ, потом "{", потом последовательность не "}" и в конце нашел "}", т.е. совпало "^{[^}".

чтобы из "gf^{[^}]*}hdfj" получилось "gfhdfj", то можно так:
Код

$var=~s/\^{\[\^}\]\*\}//;

или так
Код

$var=~s/\^.*\}//;


а выражение
Код

$var=~s/^{[^}]*}//;

удаляет часть строки, которая закючена в {} и начинается с начала строки:
Код

$var1 = 'text {tag  tag  tag}text text text {tag}';
$var2 = '{tag  tag  tag}text text text {tag}';
$var1 =~ s/^{[^}]*}//;
$var2 =~ s/^{[^}]*}//;
print $var1, "\n", $var2;

Код

text {tag  tag  tag}text text text {tag}
text text text {tag}


вродебы так smile
PM MAIL   Вверх
Logo
Дата 16.12.2010, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 5
Всего: 10



Или так
Код

$var=~s/\Q^{[^}]*}//; 

PM MAIL   Вверх
alezzz
Дата 17.12.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



но так не хочет, перепробовал разные способы
Код

$var1 = "\Qtext^{[^}]*}text";
$var=~s/\Q^{[^}]*}\E//; 
print $var1, "\n";
$var1 = '\Qtext^{[^}]*}text';
$var=~s/\Q^{[^}]*}\E//; 
print $var1, "\n";
$var1 = "\Qtext^{[^}]*}text";
$var=~/\Q^{[^}]*}\E/; 
print $&, "\n";

Код

text\^\{\[\^\}\]\*\}text
\Qtext^{[^}]*}text


в последнем случае в $& пусто

А вообще помоему регулярное выражения изначально не для этого строилось
Цитата

удаляет часть строки, которая закючена в {} и начинается с начала строки


Это сообщение отредактировал(а) alezzz - 17.12.2010, 10:21
PM MAIL   Вверх
Logo
Дата 17.12.2010, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 5
Всего: 10



Код

$var=~s/\Q^{[^}]*}//; 

это аналог вашего
Код

$var=~s/\^{\[\^}\]\*\}//;


Цитата

А вообще помоему регулярное выражения изначально не для этого строилось

 Но тс, судя по всему, хочет применит regexp именно для этогоsmile Хотя я тоже не телепат, точно не скажуsmile
PM MAIL   Вверх
alezzz
Дата 17.12.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



ну незнаю....
Код

$var1 = "text^{[^}]*}text";
$var1=~s/\^{\[\^}\]\*\}//;
print $var1, "\n";
$var1 = "text^{[^}]*}text";
$var=~s/\Q^{[^}]*}//; 
print $var1;

Код

texttext
text^{[^}]*}text

по документации должно работать, но не хочет
PM MAIL   Вверх
alezzz
Дата 17.12.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



нашел у себя ошибку
Код

$var1 = 'text^{[^}]*}text';
$var1=~s/\Q^{[^}]*}\E//; 
print $var1;

Код

texttext

работает smile
PM MAIL   Вверх
truffle
Дата 17.12.2010, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Цитата(alezzz @ 17.12.2010,  10:21)
А вообще помоему регулярное выражения изначально не для этого строилось

А для чего оно еще могло строиться? его можно другим способом прочитать?
PM MAIL   Вверх
alezzz
Дата 17.12.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 11
Всего: 14



Цитата(truffle @  16.12.2010,  15:12 Найти цитируемый пост)
тогда еще вопрос, почему у меня скрипт:
   $var = 'gf^{[^}]*}hdfj';
   $var=~s/^{[^}]*}//;
   print $var;

выводит:

gf^{[^}]*}hdfj

Вот это навело на ложный след smile
PM MAIL   Вверх
truffle
Дата 17.12.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Вероятность ошибки в выражении исключена. У меня на входе работающий скрипт, в котором есть функция

Код

my ($prop) = @_;
$prop=~s/^{[^}]*}//;
return $prop; 


его(скрипт) надо переписать на яве, вот я и пытаюсь понять, что делает эта функция. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.