Регулярные выражения для строки протокола ASTMJAVA

Программисты JAVA общаются здесь
Anonymous
Регулярные выражения для строки протокола ASTM

Сообщение Anonymous »

Каким может быть регулярное выражение для стандартной строки протокола ASTM? < /p>

Код: Выделить всё

"P|1||123456||^|||U" + ProtocolASCII.LF
+ "O|1||138||||||||||||O" + ProtocolASCII.LF
+ "R|1|^^^BE(B)||mmol/L||C||||||20150819144937" + ProtocolASCII.LF
+ "R|2|^^^BEecf||mmol/L||C" + ProtocolASCII.LF
+ "R|3|^^^Ca++|1.17|mmol/L" + ProtocolASCII.LF
< /code>

где Protocolascii.lf = '\ n' < /code>. Я пишу String  parser , чтобы извлечь данные из этой строки. < /p>

У меня есть разделенная строка на основе \ n < /code>, и теперь мне нужно проанализировать каждую строку для извлечения данных. 

Существует ли какое -либо регулярное выражение, чтобы я мог отображать и получить желаемый результат? 

для строки r | 3 | ^^^ Ca ++ | 1.17 | mmol/l "+protocolascii.lf 
является результатом выполненного лабораторного теста. Где r указывает result , ^^^ Ca ++ указывает на имя результата, 1.17 - значение результата, а mmol/l - единица.

В настоящее время я перебираю струну, как:

.String[] resultArray = dataString.split("[\\r\\n]+");

HashMap resultData = new HashMap();
List sampleResults = new ArrayList();

for (String res : resultArray) {
//Get first character of String
char startChar = res.charAt(0);
switch (startChar) {
case ProtocolASCII.STX:
//Handle Header information. This is special case
if (res.charAt(2) == ProtocolASCII.Alphabet.H
|| res.charAt(1) == ProtocolASCII.Alphabet.H) {
resultData.put(Key.MACHINE_INFO, getHeaderInfo(res));
//System.out.println(res.charAt(2));
}
break;
case ProtocolASCII.Alphabet.P:
resultData.put(Key.PATIENT, getPatientInfo(res));
break;
case ProtocolASCII.Alphabet.O:
resultData.put(Key.ORDER, getOrderInfo(res));
break;
case ProtocolASCII.Alphabet.R:
sampleResults.add(getResultInfo(res));
break;
case ProtocolASCII.Alphabet.L:
// TODO - Handle end of line
break;
}
}
< /code>

Это моя полная строка протокола ASTM: < /p>

/**
* Sample string
*/
public static final String MACHINE_STRING_ASTM = ProtocolASCII.STX + "1H|\\^&|||GEM 3000^5.6.1 ^21152^^023665^2.4|||||||||20150819154754" + ProtocolASCII.LF
+ "P|1||322061||^|||U" + ProtocolASCII.LF
+ "O|1||138||||||||||||O" + ProtocolASCII.LF
+ "R|1|^^^BE(B)||mmol/L||C||||||20150819144937" + ProtocolASCII.LF
+ "R|2|^^^BEecf||mmol/L||C" + ProtocolASCII.LF
+ "R|3|^^^Ca++|1.17|mmol/L" + ProtocolASCII.LF
+ "R|4|^^^Ca++(7.4)||mmol/L||C" + ProtocolASCII.LF
+ "R|5|^^^HCO23-||mmol/L||C" + ProtocolASCII.LF
+ "R|6|^^^HCO3std||mmol/L||C" + ProtocolASCII.LF
+ "R|7|^^^K+|5.0|mmol/L" + ProtocolASCII.LF
+ "R|8|^^^Na+|140|mmol/L" + ProtocolASCII.LF
+ "R|9|^^^SO2c||%||C" + ProtocolASCII.LF
+ "R|10|^^^TCO2||mmol/L||C" + ProtocolASCII.LF
+ "R|11|^^^THbc||g/dL||C" + ProtocolASCII.LF
+ "R|12|^^^Temp|37.0|C" + ProtocolASCII.LF
+ "L|1" + ProtocolASCII.EOT;
< /code>

Есть ли способ извлечения данных, используя регулярные выражения? < /p>

Дайте мне знать, если требуется дополнительная информация.>

Подробнее здесь: https://stackoverflow.com/questions/417 ... col-string

Вернуться в «JAVA»