我正在處理來自明文消息(HL7)的文本格式並將其重新格式化以供顯示。一個例子是\.sp5\
。這意味着有五個換行符。查找並替換字符串模式N次,其中N在模式中定義
所以我想我會想要做這樣的事情:
Pattern.compile("\\\.sp(\d+)\\").matcher(retval).replaceAll("\n{$1}");
我的IDE告訴我,有在\d
無效轉義序列,我不知道,如果ReplaceAll參數會做我期望的。我認爲正則表達式描述了「反斜槓點p一個或多個數字的反斜槓」,我希望替換說「放入$ 1換行符」。
我該如何做到這一點?
的解決方案是從下面2名評議的組合:
Pattern verticalSpacesPattern = Pattern.compile("\\\\\\.sp(\\d+)\\\\", Pattern.MULTILINE);
Matcher verticalSpacesMatcher = verticalSpacesPattern.matcher(retval);
while (verticalSpacesMatcher.find()) {
int lineBreakCount = Integer.parseInt(verticalSpacesMatcher.group(1));
String lineBreaks = StringUtils.repeat("\n", lineBreakCount);
String group = verticalSpacesMatcher.group(0);
retval = StringUtils.replace(retval, group, lineBreaks);
}
由於處理該問題的一般模式而被接受。我不得不使用Dave DiFranco的正則表達式。與sol'n編輯原始帖子 – Freiheit 2011-03-17 17:07:52