Это немного сложно, хотя ваша попытка выглядит великолепно. Я предполагаю, что мы могли бы захотеть захватить 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](https://i.stack.imgur.com/TKGzU.png)