Member 12692000 Ответов: 2

Как мне сделать инкремент в регулярном выражении?


Как добавить опцию для увеличения цифровой части регулярного выражения на +1?
Я написал следующий пример

Что я уже пробовал:

string input="dsfjl kfjd dsfds fds sd abc3, abc4, abc5 dsfdgfdf ggd gdfg dfg  gdfg dfg gdf gf g abc13 abc14 abc20 abc21 abc22 dsfsdf abc13, abc4, abc5";
			Regex rx = new Regex(@"(?:abc(\d+)\s*,?\s*){2,}abc(\d+)");
			foreach (Match m in Regex.Matches(input,rx.ToString())) {
				Console.WriteLine(m.Value);
			}
			Console.ReadKey();

Сгенерированный результат таков
abc3, abc4, abc5
abc13 abc14 abc20 abc21 abc22
abc13, abc4, abc5

Но я хочу получить результат как
abc3, abc4, abc5
abc20 abc21 abc22
т. е. получить только те последовательные совпадения, которые имеют цифры, увеличенные на +1
Как я могу реализовать это в своем коде?

Richard Deeming

Так почему же это так abc13, abc14 исключен?

Или второй abc4, abc5?

Member 12692000

Я хочу 3 или более последовательных строк abcDIGIT разделяется запятой или пробелом, где цифра увеличивается на +1, в случае abc13 abc14 abc20 abc21 abc22, только abc20 abc21 abc22 соответствуйте критериям, поэтому следует брать только эту часть.

Iqra Ali

Вопрос неясен, в вопросе нет никакой последовательной логики.

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
Как мне сделать инкремент в регулярном выражении?

Вы не
Используйте регулярное выражение, чтобы получить список всех совпадений, а затем используйте небольшой фрагмент кода для фильтрации/упорядочивания списка по своему усмотрению.
*****
Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Рейтинг:
0

OriginalGriff

Не.
Регулярные выражения являются строковыми процессорами и отлично справляются с сопоставлением шаблонов, но они не имеют никакого понятия о числах, поэтому вся идея "увеличения счетчика" дается им совсем не просто - вам придется вручную кодировать каждую цифру и обрабатывать переполнение, не забывая обрабатывать каждую цифру там же.
Используйте регулярное выражение для захвата совпадений, но обрабатывайте совпадения в своем коде, чтобы установить порядок и удалить те, которые не подходят.