正则表达式:匹配FilePath的模式也匹配时间戳

时间:2014-03-05 07:42:21

标签: regex

我正在尝试使用正则表达式从日志中查找文件路径。但它也与时间戳匹配。

我使用的是这种模式:/(?:\w)[a-zA-Z0-9_./$-](([a-zA-Z0-9_./$-]+ ?)+)*/?

假设字符串为:Date logged on 23/34/12 12:34:12 AM into /asd/asd/sfd

但它也匹配34/12 12。如何防止这种情况发生。我可以从代码中做到这一点。我想从正则表达式本身做到这一点。

3 个答案:

答案 0 :(得分:1)

首先,你不应该像这样嵌套量词 - 你自己容易受到catastrophic backtracking的攻击。<​​/ p>

其次,您必须考虑将文件路径与日期戳完全区分的内容。我能想到的最简单的事情是文件路径需要以/开头,之前没有数字(或其他字母数字)。可以使用word boundary anchor \B

来检查
\B/[\w./$-]+(?: [\w./$-]+)*

答案 1 :(得分:0)

我不确定,但你可以尝试一下。这将限制它使第一个成为字符而不是数字。

/(?:\w)[a-zA-Z]{1}[a-zA-Z0-9_./$-](([a-zA-Z0-9_./$-]+ ?)+)*/?

答案 2 :(得分:0)

如果你的引擎支持看起来很好:

'(?<=into )[\w./$-]+'