我对正则表达式很陌生。我想提取以下字符串“109_Admin_RegistrationResponse_20130103.txt”
从此文件内容中,每行选择内容:
01-10-13 10:44AM 47 107_Admin_RegistrationDetail_20130111.txt
01-10-13 10:40AM 11 107_Admin_RegistrationResponse_20130111.txt
正则表达式不应该选择第二行,只有第一行应该返回 true。
我对正则表达式很陌生。我想提取以下字符串“109_Admin_RegistrationResponse_20130103.txt”
从此文件内容中,每行选择内容:
01-10-13 10:44AM 47 107_Admin_RegistrationDetail_20130111.txt
01-10-13 10:40AM 11 107_Admin_RegistrationResponse_20130111.txt
正则表达式不应该选择第二行,只有第一行应该返回 true。
你的正则表达式有很多不同的错误......
^
那里+
在您的字符组中丢失[a-zA-Z]
,因此只能匹配单个字符_
在您的角色组中,因此不匹配Admin_RegistrationResponse
\
并且d{2}
只会匹配dd
。.
,否则它也会匹配123_abc_12345678atxt
(注意a
之前的txt
)你的正则表达式应该是
\d+_[a-zA-Z_]+_\d{4}\d{2}\d{2}\.txt$
可以简化为
\d+_[a-zA-Z_]+_\d{8}\.txt$
看起来\d{2}\d{2}
真的是多余的——除非你想捕获组,否则你会这样做:
\d+_[a-zA-Z_]+_(\d{4})(\d{2})(\d{2})\.txt$
Remove the anchors and escape the dot:
\d+[a-zA-Z_]+\d{8}\.txt
我是 php 的新手,但我认为您可以使用explode()
php 中的函数或您的语言中的任何等效函数。
$string = "01-09-13 10:17AM 11 109_Admin_RegistrationResponse_20130103.txt";
$pieces = explode("_", $string);
$stringout = "";
foreach($i = 0;$i<count($pieces);i++){
$stringout = $stringout.$pieces[$i];
}