Регулярное выражение, которое игнорирует несколько символов, пока не найдет шаблон, упомянутый - PullRequest
0 голосов
/ 01 апреля 2019

Я должен найти десятичную дробь в pdf, которая находится под столбцом «заряд».

Итак, я наткнулся на регулярное выражение, чтобы найти десятичное число, которое отлично работает. Но в одном из pdf у меня есть в следующем формате.

Pdf Text - Сбор (страна) Восемнадцать тысяч сто восемьдесят один и 75/100 18 181,75 Ожидаемое - 18 181,75

Регулярное выражение, которое используется для нахождения десятичной дроби после текста "Charge": (Charge ([0-9] *) (\ ,? []? [0-9]) + (. [0-9 ] +))

Итак, я хочу игнорировать все, что находится в середине "заряда" и десятичного числа. и отобразить десятичное число. Любая помощь?

вариант 2: «18 181,75» иногда может предшествовать «Заряду». Например: «18 181,75 Зарядите текст здесь ...»

Ответы [ 3 ]

2 голосов
/ 01 апреля 2019

Вы можете использовать .NET-регулярные выражения неограниченной ширины:

Regex.Match(s, @"(?<=\bCharge\b.*)\d[\d,]*\.\d+|\d[\d,]*\.\d+(?=.*?\bCharge\b)")

См. Демоверсию regex

Детали

  • (?<=\bCharge\b.*)\d[\d,]*\.\d+ - местоположение, которому предшествует целое слово Charge с символами, отличными от новой строки после него, а затем соответствует цифре, за которой следуют 0+ запятые или цифры, затем точка и 1+ цифры
  • | - или
  • \d[\d,]*\.\d+(?=.*?\bCharge\b) - цифра, за которой следуют 0+ запятых или цифр, затем точка и 1+ цифр, за которыми должно следовать любое число символов 0+, кроме новой строки, как можно меньше, а затем Charge в целом слово

enter image description here

0 голосов
/ 01 апреля 2019

Что по этому поводу:

(?. <= [Cc] harge <em>)

([0-9] [0-9] [0-9] .) | [0-9] , [0-9] * +1008 *. [0-9] (? = \ s [Сс] harge)

0 голосов
/ 01 апреля 2019

Ниже регулярное выражение должно помочь вам.

Charge.*[0-9]+([,]?[0-9]+)*\.([0-9]){0,2}$

Надеюсь, это работает.

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