Недостаточно) в регулярном выражении C#C#

Место общения программистов C#
Ответить
Anonymous
 Недостаточно) в регулярном выражении C#

Сообщение Anonymous »

У меня есть лист Excel, который выглядит следующим образом:

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

    +-------+------+-------+------+------------+
|   A   |  B   |   C   |  D   |      E     |
+---+-------+------|-------+------+------------+
| 1 | Location     | Duration     | Delay      |
+---+--------------+--------------+------------+
| 2 | Ware House-1 | 2.3 Hr.      | No Power   |
+---+--------------+--------------+------------+
| 3 | Stg. Area 2  | 15 Min.      | Out of     |
|   |              |              | materials. |
+---+--------------+--------------+------------+
| 4 | Gate #7      |              | No Delays  |
+---+--------------+--------------+------------+

Пользователи собираются скопировать ячейки (A2:E4) из Excel и вставить их в мою текстовую область.
Обратите внимание на ячейки с полями (столбцы A, Б и С,Г). При вставке этих ячеек символ TAB появляется дважды после значений этих ячеек.
Я пытаюсь использовать Regex для захвата значений в каждой строке.

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

^(?[^\t]+)\t\t(?[^\t]+)?\t\t(?[^\n]+)\n
Проблема, с которой я столкнулся, заключается в том, что значение в столбце E может занимать несколько строк. Заставляет Excel принудительно добавлять " до и после значения. Это портит захват регулярного выражения. Поэтому я решил адаптировать регулярное выражение так, чтобы оно ожидало одну или несколько строк:

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

^([^\t]+)\t\t([^\t]+)?\t\t((?:"([^"]+\n[^"]+)")|([^\t]+))
Приведенное выше регулярное выражение отлично работает в VS Code, но когда я пробую его в регулярном выражении C#, появляется сообщение об ошибке:

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

 Error: parsing "^([^\t]+)\t\t([^\t]+)?\t\t((?:"([^"]+\n[^"]+)")" - Not enough )'s.
Как я могу записать эти значения в C# (ожидая многострочные двойные кавычки или одну строку без кавычек)?

Подробнее здесь: https://stackoverflow.com/questions/792 ... harp-regex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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