Регулярное выражение для соответствия числам в круглой скобке в квадратных скобках с дополнительным текстом

timeoutable относится к тайм-ауту сеанса входа в систему. Никаких дополнительных столбцов не требуется, просто добавьте их в свою модель.

Хук timeoutable содержит всю магию (источник: https://github.com/plataformatec/devise/blob/master/lib/devise/hooks/timeoutable.rb )

5
задан Brad Mace 9 July 2011 в 06:15
поделиться

6 ответов

Это должно работать:

\[\(\d+\).*?\]

И если вам нужно поймать номер, просто заключите \ d + в круглые скобки:

\[\((\d+)\).*?\]
16
ответ дан 18 December 2019 в 08:30
поделиться

Вы должны сопоставить []? Можете ли вы сделать просто ...

\((\d+)\)

(Сами числа будут в группах).

Например ...

var mg = Regex.Match( "[(34) Some Text - Some Other Text]", @"\((\d+)\)");

if (mg.Success)
{
  var num = mg.Groups[1].Value; // num == 34
}
  else
{
  // No match
}
1
ответ дан 18 December 2019 в 08:30
поделиться

Что-то вроде:

\[\(\d+\)[^\]]*\]

Возможно, потребуется еще экранирование?

0
ответ дан 18 December 2019 в 08:30
поделиться

Как насчет "^ \ [\ ((d +) \)" (стиль perl, не знакомый с C #). Я думаю, вы можете спокойно игнорировать остальную часть строки.

0
ответ дан 18 December 2019 в 08:30
поделиться

Как это? Предполагая, что вам нужно только определить, является ли строка совпадением, и не нужно извлекать числовое значение ...

        string test = "[(34) Some Text - Some Other Text]";

        Regex regex = new Regex( "\\[\\(\\d+\\).*\\]" );

        Match match = regex.Match( test );

        Console.WriteLine( "{0}\t{1}", test, match.Success );
0
ответ дан 18 December 2019 в 08:30
поделиться

В зависимости от того, что вы пытаетесь выполнить ...

List<Boolean> rslt;
String searchIn;
Regex regxObj;
MatchCollection mtchObj;
Int32 mtchGrp;

searchIn = @"[(34) Some Text - Some Other Text] [(1)]";

regxObj = new Regex(@"\[\(([^\)]+)\)[^\]]*\]");

mtchObj = regxObj.Matches(searchIn);

if (mtchObj.Count > 0)
    rslt = new List<bool>(mtchObj.Count);
else
    rslt = new List<bool>();

foreach (Match crntMtch in mtchObj)
{
    if (Int32.TryParse(crntMtch.Value, out mtchGrp))
    {
        rslt.Add(true);
    }
}
0
ответ дан 18 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

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