使用正则表达式和分隔符提取数据

时间:2014-10-07 18:48:27

标签: java regex extraction

如何使用正则表达式

提取%3B和%2C之间的所有字符
%3B09573000P%2C%3B0906000P%2C%3B09593000P%2C%3B09512100P

所以,我试图提取以' P'从下面。 *重要的是要注意它们总是不会以P结束,因此我必须使用%3B和%2C进行提取。

%3B
09573000P
%2C%3B
0906000P
%2C%3B
09593000P
%2C%3B
09512100P

我尝试了以下方法,但没有成功。

'[(^%3B)(^%2B)]'


'%3B(.*)%2C'

1 个答案:

答案 0 :(得分:3)

%3B(.*)%2C的问题在于*是"贪婪",从某种意义上说它会继续捕获%2,{ {1}},等等。您可以通过使其不情愿来改变它,如下所示:

C

但是,对于长字符串,这个解决方案并不是很好,因为它很容易catastrophic backtracking。如果您确定标记之间的内容不包含%3B(.*?)%2C 个字符,则可以提高性能:

%

如果您想捕获尾随字符串,请将%3B([^%]*)%2C 添加到结束标记:

|$

Demo.