我有一些字符串,其中包含glucose
信息及其相應的值。例如,一個樣本串是「FINGER BLOOD GLUCOSE 1562小時PP」和我有在Java中下面的程序,在正則表達式中使用正斜槓(/)無法正確識別
public class GlucosePattern{
// test string
private static String case1 = "FINGER BLOOD GLUCOSE 156 two hours PP";
private static final String decimalValue = "(\\d+(\\.|,)\\d+)|(\\s\\d+(\\s|$))";
private static final String glucose = "Glucose.*?";
private static final Pattern COMPILED_PATTERN = Pattern.compile(glucose+ decimalValue,
Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
public Matcher find(final String text) {
return pattern.matcher(text);
}
}
// the test of the program
@Test
public void findWithCase1ShouldFindPattern() throws Exception {
assertTrue(new GlucosePattern().find(case1).find());
}
所提供的測試返回true
但是,當我使用的一些其他字符串,比方說,"Labs showed normal anion gap, glucose 278, u/a w/ 1+ ketones."
的測試失敗。我相信這是由於正斜槓「/」的事實而發生的。
如何提高正則表達式正常工作?
這是導致問題的278之後的逗號。這部分正則表達式'(\\。|,)\\ d +'期望逗號後面至少有1位數字,而另一部分'(\\ s \\ d +(\\ s | $))'的正則表達式期望數字後面跟着空格。 – Wernsey
是的,這是解決的,我接受它作爲答案。 – Chaklader