Как найти, какие символы в строке не соответствуют шаблону регулярного выражения?C#

Место общения программистов C#
Anonymous
Как найти, какие символы в строке не соответствуют шаблону регулярного выражения?

Сообщение Anonymous »

Имея этот шаблон регулярного выражения (в С#):

Код: Выделить всё

^\d{2}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}$
эта строка будет соответствовать:

Код: Выделить всё

11/10/25 17:22:31
а вот этого нет (у него просто добавлена ​​буква «X»)

Код: Выделить всё

X11/10/25 17:22:31
этот тоже:

Код: Выделить всё

11/10/25 X17:22:31
Есть ли способ узнать, когда строка не соответствует шаблону, какие части строк делают ее несоответствующей? (т. е. найти символы, которые, если их удалить, будут соответствовать регулярному выражению)
Итак, как в этом случае найти «X»?
Почему я этого хочу:
Я читаю кучу текстовых файлов, где каждая строка должна соответствовать шаблону. Но я обнаружил, что во многих случаях файл кажется каким-то образом поврежденным, и где-то в некоторых строках случайно добавляется какой-то символ, что делает его не соответствующим регулярному выражению. На данный момент я просто игнорирую эти строки как недопустимые, но пытаюсь выяснить, не соответствует ли строка только потому, что где-то есть один «неправильный» символ, так что, просто удалив этот символ, регулярное выражение будет соответствовать шаблону, и тогда я смогу считать его действительным.
Надеюсь, это объяснение имеет смысл...

Подробнее здесь: https://stackoverflow.com/questions/797 ... egex-patte

Вернуться в «C#»