5

我怎样才能|ADT^A05|摆脱

“MSH|^~\&|PHTADT09|ABC|DADIST00|ABC|20120425152829|rcalini1|ADT^A05|20429208851634|P|2.1|560”

我试过这个但没有工作

"|([A-Z]{3})^([A-Z]{1})([0-9]{2})|"
4

4 回答 4

5

当有分隔符时,我认为你不需要正则表达式|

var adt = text.Split('|')[8];

HL7格式的定义

消息中的每个段都被划分为组合或字段,字段由竖线字符('|')分隔

于 2012-12-12T21:38:30.720 回答
4

您需要转义|and ^,因为它们是正则表达式中的特殊字符。

@"\|([A-Z]{3})\^([A-Z]{1})([0-9]{2})\|"

或者,如果您不喜欢逐字文字:

"\\|([A-Z]{3})\\^([A-Z]{1})([0-9]{2})\\|"

请注意,逐字文字(@在开头引号之前使用)使正则表达式更具可读性(并且更便携——现在您可以将该正则表达式复制/粘贴到其他地方)。除非您有充分的理由不这样做,否则您应该始终将逐字文字与正则表达式字符串一起使用。

于 2012-12-12T21:39:56.583 回答
2

在某些字符之前放置反斜杠:|^.

\|([A-Z]{3})\^([A-Z]{1})([0-9]{2})\|

编辑:我最喜欢的网站 - http://regexpal.com/

于 2012-12-12T21:37:49.610 回答
1

如果您可以访问 BizTalk,Microsoft 有用于 HL7的加速器,可以将您的消息分解为 XML。否则,我会选择LB的答案并直接拆分字符串。

于 2012-12-12T22:03:07.257 回答