2014-01-07 4 views
0

Я пытаюсь найти этот ответ на некоторое время, но не повезло (извините, если бы я мог хорошо описать его). Я все еще новичок с регулярным выражением. Я пытаюсь совместить строку с единственным числом и определенным разделителем. Например: patter будет 8/16/32/64/.... число будет разделено на '/' с произвольным количеством чисел, я мог бы найти способ их сопоставления. Моя попытка \ d +/\ d +? но не мог заставить его работать.Использование регулярного выражения для соответствия определенному тексту

+0

Какой язык вы используете? Вы просто пытаетесь проверить, что строка содержит только цифры с разделителем косой черты? Или вы пытаетесь вытащить это из строки? – smerny

+0

Разделите строку '/', если вы просто пытаетесь извлечь числа. Но если вы пытаетесь проверить формат строки, это еще одна история. Для этого я проверил бы, если '[0-9 \ /] +' возвращает только одно совпадение. – tenub

ответ

0

Наивный подход будет

[\d/]+ 

Однако это делает матч ////, а также просто 12345. Для того, чтобы соответствовать только «правильной» строке:

\d+(/\d+)+ 

Читает цифру следует разделитель + цифра неоднократной по крайней мере один раз. Если хвостовые/ведущие разделители разрешены, то

/?(\d+/)+\d* 

Если вы используете аромат, который использует слэш процитировать регулярное выражение (например, JavaScript), вам нужно, чтобы избежать их:

/\d+(\/\d+)+/ 
0

Вы можете удалить «/» разделитель, а затем проверить на наличие ряда

Вот некоторые C# в качестве примера:

static void Main(string[] args) 
    { 
     string text = "8/16/32/64/"; 
     Console.WriteLine(text); 

     TestForNum(text); 
     text = "8/16/32/64/b"; 
     Console.WriteLine(text); 
     TestForNum(text); 

     Console.ReadKey(); 
    } 

    private static void TestForNum(string text) 
    { 
     string tmp = Regex.Replace(text, @"/", ""); 
     Match m = Regex.Match(tmp, @"^\d+$"); 
     if(m.Success) 
     { 
      Console.WriteLine("\t" + m.Groups[0]); 
     } 
     else Console.WriteLine("\tno match"); 
    } 
0

Вы можете сделать:

(\d+)(\D|$)  

See this work Это разделит список цифр, разделенных любой не цифры, так 1?2!3.4 будет соответствовать

Если вы хотите определенный разделитель, например /:

(\d+)(?:/|$) 
0

как можно проще:

(\d+\/?)+ 

Каждая цифра, за которой следует [a] косая черта, как можно больше. Вы можете использовать флаг g для всех матчей.

Смежные вопросы