#regex
#регулярное выражение
Вопрос:
Я хочу сопоставить [[Party Signatures]]
следующее независимо от регистра. Таким образом, тестовый текст может быть: I would like to collect [[party signatureS]] tonight
.
Мне удалось сопоставить фразу без квадратных скобок ( (?i)bparty signaturesb
), но я не могу понять, как включить квадратные скобки в поиск.
Комментарии:
1.
/[[(.*?)]]/gmi
следует ли это делать?2. @SamuelG Не уверен, на что я здесь смотрю.
3. какой язык вы используете?
4. Просто добавьте скобки в регулярное выражение:
(?i)[[party signatures]]
, границы слов здесь бесполезны.5. @Toto Это сработало
Ответ №1:
Вам нужно экранировать квадратные скобки, а затем выполнить не жадное сопоставление содержимого между скобками.
Экранируйте специальные символы с помощью
перед скобками и создайте группу захвата, чтобы захватить все, что находится между нулевыми или более скобками, используя (*.?)
// ignorecare and process multiple lines
var regex = new Regex(@"[[(.*?)]]", RegexOptions.IgnoreCase | RegexOptions.Multiline);
var matches = regex.Matches("I would like to collect [[party signatureS]] tonight [[party signatureS]]");
if (matches.Count > 0)
{
Console.WriteLine(matches.Count);
}
else
{
Console.WriteLine("nope");
}
Ответ №2:
Если вы не используете C #, этот шаблон может помочь:
- установите модификатор без учета регистра
- найдите 2 открывающие квадратные скобки
- ищите любые символы слова или пробелы
- найдите 2 закрывающие квадратные скобки
(?i)[{2}[w ]*]{2}