захватить фрагмент строки снизу txt - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь прочитать и получить конкретные значения из таблицы в формате txt с регулярным выражением из скопированного файла PDF.

Например:

DADOS DO FABRICANTE
* CNPJ/CPF           UF    Quantidade Peso Líquido(kg)   Vl.Moeda
- 99.999.999/9999-99 MN    4,00000    212,00000          250.400,00
Obs:

В приведенном выше тексте я хотел быполучить значение от UF, которое является MN и другие, конечно, как Vl.Moeda

Я пытаюсь это регулярное выражение, но не очень хорошо работает:

[*\n\r\s*]UF\s *.*[^\w]

1 Ответ

1 голос
/ 20 июня 2019

Это немного сложно, хотя ваша попытка выглядит великолепно. Я предполагаю, что мы могли бы захотеть захватить UF и Vl.Moeda и связанные значения, что мы могли бы сделать это, возможно, с помощью этого выражения:

\b([A-Z]{2})\b\s{2,}.*\s{2,}(.+)

, где мы добавим \s{2,}, чтобы пропустить другие подобные тексты, а затем запишем желаемые результаты в ([A-Z]{2}) и (.+).

Демо

Test

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"\b([A-Z]{2})\b\s{2,}.*\s{2,}(.+)";
        string input = @"DADOS DO FABRICANTE
* CNPJ/CPF           UF    Quantidade Peso Líquido(kg)   Vl.Moeda
- 99.999.999/9999-99 MN    4,00000    212,00000          250.400,00
Obs:
- 99.999.999/9999-99 AB    4,00000    212,00000          250.400,00000
Obs:
- 99.999.999/9999-99 XZ    4,00000    212,00000          250.400,00000
Obs:";
        RegexOptions options = RegexOptions.Multiline;

        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...