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

Regex 从文件名返回字符串的正则表达式,regex,Regex,如何编写将 1) 将第一个字符后面和第二个字符前面的字符串捕获为组1 2) 捕获最后一个uu后的字符串作为组2 范例 ASIA_JAP_TOKYO_201109 产出将是 group 1 - JAP group 2 - 201109 你可以做: ^[^_]*_([^_]*).*_([^_]*)$ 在这里,第一个被抓获的群体将是“日本鬼子”,第二个将是“201109” ^[^\u]*.\ u匹配从开始到开始的第一个\u 第一个捕获的组,([^]*)将字符串捕获到下一个。 *\u贪婪地

如何编写将
1) 将第一个字符后面和第二个字符前面的字符串捕获为组1
2) 捕获最后一个uu后的字符串作为组2

范例

ASIA_JAP_TOKYO_201109
产出将是

group 1 - JAP   
group 2 - 201109
你可以做:

^[^_]*_([^_]*).*_([^_]*)$
在这里,第一个被抓获的群体将是“日本鬼子”,第二个将是“201109”

  • ^[^\u]*.\ u
    匹配从开始到开始的第一个
    \u

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

  • *\u
    贪婪地匹配到最后一个
    \u

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


为了便于阅读,我可能会为此使用两个单独的正则表达式:

第一个正则表达式:

^[^_]*_([^_]*?)_(.*)$
第二个正则表达式:

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

但是,如果您使用的是Java或Perl之类的工具,我更愿意在下划线上拆分字符串并提取出所需的片段。

您可以像使用正则表达式一样使用正则表达式

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

/^[^.++...[^.+)$/