Удаление цитат из строки - PullRequest
6 голосов
/ 21 апреля 2011

Так что я подумал, что это будет простой проблемой, однако я получаю неправильные результаты. В основном я пытаюсь удалить кавычки вокруг строки. Например, у меня есть строка "01:00", и я хочу 01:00, ниже приведен код того, как я думал, что смогу сделать это:

$expected_start_time = $conditions =~ m/(\"[^\"])/;

Каждый раз, когда он запускается, он возвращает 1, поэтому я предполагаю, что он просто возвращает true, а не извлекает строку из кавычек. Это происходит независимо от того, что находится в кавычках "02:00", "02:20", "08:00" и т. Д.

Ответы [ 4 ]

13 голосов
/ 21 апреля 2011

Все, что вы забыли, было паренями за то, что LHS поместил совпадение в контекст списка, чтобы он возвращал группу (ы) подстатьевОбычный способ сделать это:

 ($expected_start_time) = $condition =~ /"([^"]*)"/;
10 голосов
/ 21 апреля 2011

Похоже, вы знаете, что первый и последний символ - это кавычки, поэтому используйте

$expected_start_time = substr $conditions, 1, -1;

Нет необходимости в регулярном выражении.

4 голосов
/ 21 апреля 2011

Путь грубой силы:

$expected_start_time = $conditions;
$expected_start_time =~ s/"//g;

Обратите внимание, что исходное регулярное выражение:

m/(\"[^\"])/

будет содержать начальную кавычку и следующий не кавычечный символ.Чтобы захватывать символы, не заключенные в кавычки, между двойными кавычками, вам понадобится несколько вариантов:

m/"([^"]*)"/;

Это Perl (и регулярные выражения), TMTOWTDI - это больше, чем один способ сделать это.

1 голос
/ 21 апреля 2011

В скалярном контексте регулярное выражение возвращает true, если регулярное выражение соответствует строке.Вы можете получить доступ к матчу с $1.См. perlre .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...