После 2,5 часов попыток создать регулярное выражение, которое заменит символ Caret ^ на \ S \, мое последнее средство - обратиться к сообществу.
Пример сообщения:
OBX|1|SN|test one^example test one||^9||||||F
OBX|2|ST|test two^example test two||Critical||||||F
OBX|3|NM|test three^example test one||80|bpm|||||F
OBX|4|CE|1^Test Recorded||-3^U|ml|||||F
OBX|5|CE|2^Anchor||2^results||||||F
Требование: Каретки в OBX-5 требуют замены на \ S \, но только если это сегмент OBX, а OBX-2 имеет тип значения CE или SN.Причина этого в том, что дизассемблер Biztalk HL7 не может обрабатывать каретки в OBX-5, так как он недостаточно умен, чтобы знать, что если OBX-2 имеет тип значения CE или SN, то OBX-5 имеет подтипы.
Смотрите здесь: https://social.msdn.microsoft.com/Forums/en-US/3b73edde-575c-42c8-91ed-a9957f7b6d4f/biztalk-hl7-variable-datatypes-ex-obx5?forum=biztalkgeneral
Самое близкое, что я получил, это регулярное выражение: (?<=((OBX(\|))\d{1,4}(\|)(SN|CE)(\|)(((.+?)\|)(\|))))((\^))
Однако это не работает, так как мне нужно ограничить его OBX-5 только, и не работает для персонажей перед кареткой.
Извиняюсь за длинный пост!Ценю любую помощь, которую вы можете оказать.