gpt4 book ai didi

java - 使用正则表达式根据特殊字符的出现替换字符串片段

转载 作者:行者123 更新时间:2023-12-02 05:01:34 26 4
gpt4 key购买 nike

我有一个由不同特殊字符分隔的消息字符串。例如,

MSG|027052^CMXV~MB^M^1^2^MD~GUY^M^1^2^MD|O|^1^2^STD||||027052^SCHROPP~GUY^M^^^MD

现在根据用户输入,例如,

-> 1(1).1 - Means in this string first occurrence of '|'(Occurrence of '~').Occurence of '^' -> O/P: M
-> 1(1) - Means in this string first occurrence of '|'(Occurrence of '~') -> O/P: GUY^M^1^2^MD
-> 1 - Means in this string first occurrence of '|' -> O/P: 027052^CMXV~MB^M^1^2^MD~GUY^M^1^2^MD

现在输入可以是三个之一。现在我必须用其他字符串替换找到的字符串(例如 {I: 1(1)} O: GUY^M^1^2^MD)。

以下是仅提供管道分隔正则表达式的代码。

String originalMsg = "MSG|027052^CMXV~MB^M^1^2^MD~GUY^M^1^2^MD|O|^1^2^STD||||027052^SCHROPP~GUY^M^^^MD";

String msg = originalMsg.replaceAll("^((?:[^|]*\\|){1})[^|]*", "$1ABC" );

O/P: MSG|ABC|O|^1^2^STD||||027052^SCHROPP~GUY^M^^^MD

编辑:

String msg = originalMsg.replaceAll("^((?:[^|]*\\|){1}([^~]+.){2}))[^|]*", "$1ABC" );

O/P: MSG|027052^CMXVABC|O|^1^2^STD||||027052^SCHROPP~GUY^M^^^MD

它只会替换“|”分隔的字符串。我想要根据用户输入进行替换的一次性策略。

最佳答案

不要尝试手动或使用正则表达式来完成此操作。使用 HL7 解析库。一个好的 Java 开源库是 HAPI 。您可以将 HL7 消息解析为对象,您可以在其中访问字段并更改其值。

此外,访问这些值的语法似乎不符合寻址消息字段的 HL7 标准。可能还想了解一下 HL7 标准。它们应该可以从HL7 organisation website免费下载。

一定要记住 - 永远不要编写自己的 HL7 解析器,否则你会搬起石头砸自己的脚。

关于java - 使用正则表达式根据特殊字符的出现替换字符串片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com