2014-11-14 3 views
0

Возможно ли генерировать регулярные выражения из введенной пользователем строки? Существуют ли библиотеки C# для этого?Reverse RegExp из введенной пользователем строки (C#)

Например, пользователь вводит строку, например. ABCxyz123 и код C# автоматически генерируют [A-Z] {3} [a-z] {3} \ d {3}. Это простая строка, но мы могли бы иметь более сложные строки, как

ПН-0123/AB/5678-AbC 2/7

Или

1234-678/абв :: 1234ABC? 246

У меня уже есть текстовый токенизатор (из предыдущего вопроса stackoverflow), поэтому я могу создать регулярное выражение из списка токенов.

Но мне было интересно, есть ли там код lib или C#, который сделает это.

Редактировать: Важно, Я должен был также сказать: это не фактический символ в строке, которая важна, но тип характера и сколько.

e.g Пользователь может ввести строку «шаблон» ABCxyz123.

Это будет интерпретироваться как

3 верхних альф регистра с последующим

3 строчных альфами с последующим

3 цифры

Таким образом, другие пользователи (когда соблюдены) необходимо ввести строки, сопоставить этот шаблон [AZ] {3} [az] {3} \ d {3}., например QAZplm789

Это формат вводится пользователем строки, которые нуждаются в проверке не фактическое содержание, если это имеет смысл

+0

Как вы различаете, следует ли 'ABCxyc' разрешать' A-Za-z' или 'A-Cx-z'? – HimBromBeere

+0

Что-то вроде этого было бы глупо делать, потому что это не сработало, потому что [AZ] {3} [az] {3} \ d {3} может быть значительно отличной строкой, а тот, который вы ввели, вам нужно будет создать много правил для это, и я не вижу смысла в этом, так как вы можете просто использовать регулярное выражение – Vajura

+0

Думаете, вы неправильно поняли мой вопрос – Rory

ответ

1

Джерри имеет связанный ссылку creating a regular expression for a list of strings

Есть несколько других ссылок прочь это.

Я не пытаюсь делать ничего сложного например NLP и т.д.

я мог бы использовать C# построитель выражений и динамические LINQ при толчке, но это кажется излишним и код ремонтопригодны кошмар.

Я напишу свой собственный «простой» редактор регулярных выражений из токенизированной строки.

Пример Использование:

Администратора офис пользователь, где я работаю могу настроить шаблоны строк для каждого поля, введя строку шаблона, Мой код преобразует это регулярное выражение, хранить их в базе данных.

Например: поле 1 требует ввода трех цифр в начале. Если есть 2 цифры, отправьте в рабочий процесс 1, если 3, затем отправьте на рабочий процесс 2. Я просто могу проверить количество символов по substr или тому, что когда-либо было. Но это было бы конкретным решением. Я пытаюсь сделать это в общем случае для нескольких документов с несколькими полями. Кроме того, в каждом поле может быть несколько средств проверки формата.

Я не хочу писать конкретные проверки C# для каждого отдельного поля в многочисленных документах.

Я продолжу с этим, должно быть, меня развлекают пару дней.

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