使用正则表达式提取字符串

时间:2013-06-25 05:04:53

标签: regex

我有一个像

这样的字符串
1372110902.747405 29245 verbose [paymentserv]: === AUTH: ExternalFundingAnalysisStage was successful (rc:0) ===

我只想要

AUTH: ExternalFundingAnalysisStage was successful (rc:0) 

使用正则表达式。请帮我解决这个问题。

提前致谢

4 个答案:

答案 0 :(得分:2)

由于您未指定使用正则表达式的语言,因此任何语言都可能是有效的响应。因此,在Perl中,您可以使用替换:

s/.*=== (.*) ===.*/$1/;

或匹配:

m/=== (.*) ===/;

比赛结束后,$1将包含您要查找的字符串。

替换中的第二个.*之后的===对于输入的采样行是不必要的,但是在正则表达式的开头与.*对称,并且对称性令人满意。它保护替代命令免受拖尾碎片的影响;比赛不需要保护。

答案 1 :(得分:2)

使用PHP:

$var = "1372110902.747405 29245 verbose [paymentserv]: === AUTH: ExternalFundingAnalysisStage was successful (rc:0) ===";
$var = preg_replace("@.*===([^=]+)===.*@i",$1,$var);

答案 2 :(得分:0)

如果它总是沿着相同的行(从AUTH开始,以(rc:#)结尾):

//JavaScript
var str = "1372110902.747405 29245 verbose [paymentserv]: === AUTH: ExternalFundingAnalysisStage was successful (rc:0) ===";
str = str.slice(str.indexOf("AUTH"), str.lastIndexOf(")")+1);

或使用正则表达式:

str = str.replace(/^.+={3}\s(.+)\s={3}$/,"$1");

答案 3 :(得分:0)

为此您还使用java regex进行详细信息,请遵循此Tutorial,在您的情况下,您也可以使用子字符串。

像:

String str ="1372110902.747405 29245 verbose [paymentserv]: === AUTH: ExternalFundingAnalysisStage was successful (rc:0) ==="; 

String str1=str.subString(58,106);
Stirng str2=str.replace("(","");

然后你得到了你所需要的答案