RegExp извлекает значение из строки с разделителями трубы - PullRequest
2 голосов
/ 29 октября 2019

Я новичок в функции регулярных выражений и хотел получить совет. У меня есть поле, которое содержит значения с разделителями трубы и ищет для извлечения значения на основе позиции другого значения. Причина этого заключается в том, что желаемое значение не всегда устанавливается, но всегда стремится занять 5-ю позицию другого значения. Надеюсь, что в этом есть смысл.

Вот пример строки:

| XYZ | CBA | 365 | 15841.25 | 43.40 | 20171202 | 20181201 | 365 | 17024,94 | 46,64 || 20171202 | 20181201 | 365 | 17024,94 | 46,64 || 0,00 | 546,18 | 0000 |

Я хочу извлечь цифру, выделенную жирным шрифтом и курсивом - 546,18, и она стремится занять 5-ю позицию после третьей «365» или первых 365 снизу вверх, и это то, что я бы предпочел.

Я попытался перевернуть строку и получить первый экземпляр 365

первый шаг - повернуть поле (контент) обратно (контент) как content_rev

второй шаг - вернуть первый55 символов из первого экземпляра 563 и обратная строка обратно в исходное

обратный (substr (content_rev, instr (content_rev, '\ | 563 \ |') - 50, 55)) как extract_content

Вывод выглядит следующим образом: | 365 | 17024,94 | 46,64 || 0,00 | 546,18 | 8528 | 02 | 0540023096 | 2 | 2

от thЯ не уверен, как получить выделенное значение

Я уверен, что этот способ не самый эффективный метод, поэтому, если у кого-то есть лучший способ получить результат, он будет очень признателен.

1 Ответ

0 голосов
/ 29 октября 2019

Разделить используя |в качестве разделителя и взять 5-й элемент.

split(your_string, '\\|')[5]

где your_string - это то, что вы получаете, используя реверс, и т.д .: |365|17024.94|46.64||0.00|546.18|8528|02|0540023096|2|2

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