Регулярное выражение для нахождения строки включенной между двумя символами, в то время как, ИСКЛЮЧАЯ разделители

Я начал использовать новое управление Диаграммой ASP.NET несколько дней назад, и это абсолютно удивительно в своих возможностях.

Вот ссылка.

РЕДАКТИРОВАНИЕ: Это, очевидно, только если Вы используете ASP.NET. Не уверенный в WinForms.

265
задан Tim 12 November 2018 в 23:19
поделиться

3 ответа

Легко сделать:

(?<=\[)(.*?)(?=\])

Технически это с помощью просмотра вперед и назад. См. Утверждения просмотра вперед и назад с нулевой шириной . Шаблон состоит из:

  • предшествует [не захваченная (lookbehind);
  • не жадная захваченная группа. Останавливаться на первом не жадно]; и
  • следует за символом], который не захватывается (опережающий просмотр).

В качестве альтернативы вы можете просто захватить то, что находится в квадратных скобках:

\[(.*?)\]

, и вернуть первую захваченную группу вместо всего совпадения.

398
ответ дан 23 November 2019 в 02:26
поделиться

Вам просто нужно "захватить" бит между скобками.

\[(.*?)\]

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

my $string ='This is the match [more or less]';
$string =~ /\[(.*?)\]/;
print "match:$1\n";

Другие языки будут иметь другие механизмы. C #, например, использует класс Match collection , я полагаю.

19
ответ дан 23 November 2019 в 02:26
поделиться

PHP:

$string ='This is the match [more or less]';
preg_match('#\[(.*)\]#', $string, $match);
var_dump($match[1]);
8
ответ дан 23 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: