(对不起标题,任何建议表示赞赏); - )
好吧,考虑一下这些字符串:
first = "SC/SCO_160ZA206_T_mlaz_kdiz_nziizjeij.ext"
second = "MLA/SA2_jkj15PO_B_lkazkl lakzlk-akzl.oxt"
third = "A12A/AZD_KZALKZL_F_LKAZ_AZ__azaz___.ixt"
我正在寻找一个正则表达式,允许我得到这样的数组(在ruby中):
first_array = ['SCO', '160ZA206', 'T', 'mlaz_kdiz_nziizjeij']
second_array = ['SA2', 'jkj15PO', 'B', 'lkazkl lakzlk-akzl']
third_array = ['AZD', 'KZALKZL', 'F', 'LKAZ_AZ__azaz___']
第一场比赛必须在/
之后和第一场_
第二场比赛必须是第一场和第二场_
第三场比赛必须是第二场和第三场之间的任何比赛_
最后一场比赛必须是第三场_
和最后一场.
我无法得到它:[^\/].?([A-Z]*)_(.*)_(.*)[\.$]
: - (
答案 0 :(得分:6)
你非常接近。只需向第二个匹配器添加一个问号,使其变得懒惰(否则,它不会停在第一个下划线),然后复制该匹配器。
[^\/].?([A-Z]*)_(.*?)_(.*?)_(.*)[\.$]
答案 1 :(得分:1)
跟进@ fge的拆分建议:
str = "SC/SCO_160ZA206_T_mlaz_kdiz_nziizjeij.ext"
p str[(str.index('/')+1)...str.rindex('.')].split( '_', 4)
#=> ["SCO", "160ZA206", "T", "mlaz_kdiz_nziizjeij"]
它在_上分割最多4个元素(第四个元素是余数)。