如何使用正则表达式
提取%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'
答案 0 :(得分:3)
%3B(.*)%2C
的问题在于*
是"贪婪",从某种意义上说它会继续捕获%
,2
,{ {1}},等等。您可以通过使其不情愿来改变它,如下所示:
C
但是,对于长字符串,这个解决方案并不是很好,因为它很容易catastrophic backtracking。如果您确定标记之间的内容不包含%3B(.*?)%2C
个字符,则可以提高性能:
%
如果您想捕获尾随字符串,请将%3B([^%]*)%2C
添加到结束标记:
|$