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

#arrays #json #regex #string #qregularexpression

#массивы #json #регулярное выражение #строка #qregularexpression

Вопрос:

Я новичок в этой области и пытаюсь написать однострочный шаблон регулярных выражений как часть создания шаблона json, который принимал бы шаблон «массива строк»:

 ["9H", "0000", "0000", "10123", "7809", "0000", "0000"]
  

До сих пор я находил регулярное выражение для отдельных элементов, скажем, "^[0-9][A-Z]$" для первого элемента, "^[0-9]{4}$" для второго элемента и так далее.

Но мне нужно указать шаблон строки, принимающий массив из 7 таких элементов, без какого-либо изменения количества целых чисел / символов в каждом элементе. (т. Е. "10123" может быть "12345" , но не должно быть "123456" .

Комментарии:

1. Что для вас означает «принятие массива из 7 таких элементов»?

2. Если вы просто хотите проанализировать и получить string[] тогда вам следует использовать Newtonsoft.Json и просто сделать это: string[] output = (JsonConvert.DeserializeObject(source) as JArray).Select(t => t.Value<string>()).ToArray(); .

3. Серьезно, что означает «однострочный шаблон регулярного выражения как часть создания шаблона json, который будет принимать шаблон «массива строк»»?

Ответ №1:

Регулярные выражения работают со строками, так что это означает, что у вас есть два варианта:

  1. Преобразуйте весь ваш массив в одну большую строку (например arr.join('|') ), чтобы вы могли написать 1 большое регулярное выражение для его тестирования.
  2. Не делайте этого. Просто вручную выпишите код для первого элемента и выполните цикл для остальных элементов и используйте соответствующее регулярное выражение для каждой части.

# 2 имеет для меня гораздо больше смысла. Может быть немного больше кода, но этот код будет более разборчивым.

Комментарии:

1. Я прочитал вопрос так, как есть у OP string source = @"[""9H"", ""0000"", ""0000"", ""10123"", ""7809"", ""0000"", ""0000""]"; , и они хотят разобрать его на string[] .

2. Это делается как часть создания шаблона JSON. Я ищу шаблон с одной строкой, который принимал бы этот массив строк. например, если бы массив был [«0000»], мой шаблон был бы «^[0-9]{4}$»

3. @lakshmisubhash — Не могли бы вы, пожалуйста, определить, что означает «принять этот массив строк»? Не могли бы вы показать в качестве допустимого кода C #, с какими входными данными вы работаете, а затем, какими вы ожидаете получить результат?

4. Я не пишу фрагмент кода C #. Позвольте мне объяснить, что я делаю — я должен указать шаблон для шаблона. Позже, когда я предоставляю входные данные для этого шаблона, я проверяю, совпадает ли шаблон ввода с шаблоном, указанным в шаблоне. Если да, он принимает входные данные, и мы их обрабатываем. Например, если шаблон должен принимать только целые числа, я бы указал шаблон как «^ [0-9] $». Здесь я ищу такой однострочный шаблон, который принимал бы этот массив строк.