Программирование > Регулярные выражения

Вырезка текста

(1/7) > >>

Phoinix:
Есть строка:

Some text 1 [s: Some text 2] Some text 3 [/s] Some text 4

и регуларное выражение:

$text =~s /.*\\[s\\:\\s*(.*)\\s*\\](.*?)|(.*\\n?)/$1/i;

В итоге получаю $text = "Some text 2", но меня смущает что закрывающихся скобок (]) две, не возникнет ли ситуации когда $text будет получать "Some text 2] Some text 3"? Или все-таки усложнить регулярное выражение до:

$text =~s /.*\\[s\\:\\s*(.*)\\s*\\].*\\[\\/s\\](.*?)|(.*\\n?)/$1/i;

metton:
Не проверяя свои размышления и принимая во внимание время в которое я это пишу, могу сказать следующее:
имхо, из-за жадности квантификатовров при первом шаблоне $text будет иметь значение Some text 2] Some text 3 [/s]

metton:
Извиняюсь, опечатался:
Some text 2] Some text 3 [/s

Phoinix:
metton
Нет он возвращает правильное значение - Some text 2, но все-таки буду использовать второй вариант...

Просто интересно как возможно поведет себя регулярное выражение, на практике так как нужно, а в теории???

metton:
2Phoinix
Ответ, конечно, поздноват, но всё же...

Вот тест-код:

--- Код: ---
-----------------------------------------------------------------------------------
#!/usr/bin/perl -w

use strict;
use CGI qw(:all);

print header;

my $text = "Some text 1 [s: Some text 2] Some text 3 [/s] Some text 4";

print $text.\'
\';
$text =~ s/.*\\[s\\:\\s*(.*)\\s*\\](.*?)|(.*\\n?)/$1/i;
print $1.\'
\';
print $text.\'
\';
-----------------------------------------------------------------------------------

--- Конец кода ---


У меня, как я и предполагал, выдаёт:

--- Код: ---
-----------------------------------------------------------------------------------
Some text 1 [s: Some text 2] Some text 3 [/s] Some text 4
Some text 2] Some text 3 [/s
Some text 2] Some text 3 [/s Some text 4
-----------------------------------------------------------------------------------

--- Конец кода ---

Т.е. $1 выдаёт именно то что я сказал, а $text совсем не то, что тебе нужно.

И ещё: (.*?)
Тебе не кажется, что метасимвол \'?\' здесь излишен?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии