java - 使用 Java 模式的字符串定界符

标签 java regex delimiter

我有这个 id 喜欢使用 Java 模式分隔的字符串。第一行之后还有一个回车符。分隔符是|

MSH|^~\&|Unicare^HL7CISINV10.00.16^L||IBA||||ADT^A03|3203343722|P|2.3.1|||||
EVN|A03

我使用了以下代码。

Pattern pattern = Pattern.compile("([^|]++)*");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
   System.out.println("Result: \"" + matcher.group() + "\"");
}

这样做基本上会为每个分隔符显示空字符。我想忽略这些。任何修改正则表达式的机会,以便可以忽略这些字符。

提前致谢。

最佳答案

我相信 String#split() 更适合您的需求:

String src = "MSH|^~\\&|Unicare^HL7CISINV10.00.16^L||IBA||||ADT^A03|3203343722|P|2.3.1|||||\r\nEVN|A03\r";;
String[] ss = src.split("\\|+");
for (String s : ss) {
    System.out.println(s);
}

输出:

MSH
^~\&
Unicare^HL7CISINV10.00.16^L
IBA
ADT^A03
3203343722
P
2.3.1
                                 <--- there is a \r\n in the string at this point
EVN
A03

如果你想着手使用Pattern,你可以使用正则表达式[^|]+:

String str = "MSH|^~\\&|Unicare^HL7CISINV10.00.16^L||IBA||||ADT^A03|3203343722|P|2.3.1|||||\r\nEVN|A03\r";;
String[] ss = str.split("\\|+");
for (String s : ss) {
    System.out.println("Split..: \"" + s + "\"");
}
Pattern pattern = Pattern.compile("[^|]+");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
   System.out.println("Pattern: \"" + matcher.group() + "\"");
}

输出(两者完全相同):

Split..: "MSH"
Split..: "^~\&"
Split..: "Unicare^HL7CISINV10.00.16^L"
Split..: "IBA"
Split..: "ADT^A03"
Split..: "3203343722"
Split..: "P"
Split..: "2.3.1"
Split..: "
EVN"
Split..: "A03
"
Pattern: "MSH"
Pattern: "^~\&"
Pattern: "Unicare^HL7CISINV10.00.16^L"
Pattern: "IBA"
Pattern: "ADT^A03"
Pattern: "3203343722"
Pattern: "P"
Pattern: "2.3.1"
Pattern: "
EVN"
Pattern: "A03
"

关于java - 使用 Java 模式的字符串定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640762/

相关文章:

java - 直接将事件添加到日历

java - 在 Java 3D 场景中绘制清晰的健康栏

java - 在 Java 中按日期查找最年轻和最年长的狗

regex - 如何在WhitelistingTextInputFormatter的正则表达式中允许单引号?

java - 帮助正则表达式检测字符串中的 url

networking - 定界二进制序列

java - 编译java程序导致eclipse中FileNotFound错误

Javascript 测试正则表达式的虚假值

java - 在 Java 中查找一组值中的模式

在 R 中使用多个定界符从 .txt 文件中读取数据