0

我有一个带有字符序列的正则表达式。我希望将序列部分分组。

Pattern e_1394Pattern = Pattern
        .compile("\\dR\\|\\d\\|(((([^\\|]))*\\|){11})");

String resultLine = "\4R|1|^^^02^Myo^1021406330|25.6^F|ng/mL||N||F||Administrator||20140318215839|";

这种模式工作正常,但我需要以下 Part 的组(((([^\\|]))*\\|){11})。这可以使用简短的正则表达式吗?

这是没有选择的:\\dR\\|\\d\\|((([^\\|]))*\\|) ((([^\\|]))*\\|) ((([^\\|]))*\\|) ((([^\\|]))*\\|)....

4

1 回答 1

0

不确定我是否了解您的需求,但如何:

您可以使用(?1)\g1重复用于第 1 组的模式的模式,具体取决于正则表达式的风格。

在你的情况下:

"\\dR\\|\\d\\|(((([^\\|]))*\\|){11})"

与(删除多余的分组)相同:

"\\dR\\|\\d\\|([^\\|]*\\|)(?1)(?1)(?1)(?1)(?1)(?1)(?1)(?1)(?1)(?1)"
于 2014-08-28T15:38:07.373 回答