正则表达式从文件名返回字符串

时间:2016-06-20 04:27:58

标签: regex

如何编写一个通用的正则表达式 1)在第一个_之后和第二个_之前捕获字符串作为组1 2)在最后_之后捕获字符串作为组2

实施例

ASIA_JAP_TOKYO_201109

输出

group 1 - JAP   
group 2 - 201109

3 个答案:

答案 0 :(得分:2)

你可以这样做:

^[^_]*_([^_]*).*_([^_]*)$

这里首先捕获的组将是" JAP"第二个是" 201109"。

  • ^[^_]*_首先与第一个_匹配

  • 第一个捕获的群组([^_]*)捕获字符串到下一个_

  • .*_贪婪地匹配到最后_

  • ([^_]*)$匹配上一个_之后的字符串,并将其放入捕获的第2组。

Demo

答案 1 :(得分:1)

出于可读性目的,我可能会使用两个单独的正则表达式:

第一个正则表达式:

^[^_]*_([^_]*?)_(.*)$

第二个正则表达式:

^(.*)_([^_]*)$

但是如果您使用的是Java或Perl等工具,我宁愿将字符串拆分为下划线并提取出您想要的部分。

答案 2 :(得分:1)

您可以使用正则表达式

/^[^_]+_([^_]+).*_([^_]+)$/

Regex explanation here.

Regular expression visualization