只是为了好玩
^(?=.*?((?:CALL)|(?:PUT))).*?(?<day_type1>\d+.\d+.?\d+).*?(?<num_type1>\d+,\d+)|^(?=.*?((?:CALL)|(?:PUT))).*?(?<day_type2>\w{3}\s\d{2}).*?(?<num_type2>\d+.\d+)|^(?=.*?((?:CALL)|(?:PUT))).*?(?<num_type3>\d+.\d+).*?(?<day_type3>\d+\/\d+\/\d+)
Regex Demo
输出:
MATCH 1
1. [23-27] `CALL`
day_type1 [17-22] `03.16`
num_type1 [37-43] `159,50`
MATCH 2
4. [55-59] `CALL`
day_type2 [60-66] `MAR 16`
num_type2 [80-86] `159.50`
MATCH 3
7. [97-100] `PUT`
num_type3 [101-104] `2.5`
day_type3 [112-120] `15/01/16`
MATCH 4
1. [131-134] `PUT`
day_type1 [150-158] `15.01.16`
num_type1 [162-166] `2,50`
添加了更多的日期格式:
^(?=.*?((?:CALL)|(?:PUT)))(?=.*?\s(?<day>(?<day_type1>\d+[.\/]\d+[.\/]?\d+)|(?<day_type2>\w{3}\s\d{2})|(?<day_type3>\d+\/\d+\/\d+)|(?<day_type4>\d+\s\w{3}\s\d{2})))(?=.*\s[a-zA-Z]*(?<num>(?<num_type1>\d+,\d+)|(?<num_type2>\d+\.\d+)|(?:(?<num_type3>\d+\.\d+))))
Regex Demo
输出:
MATCH 1
1. [23-27] `CALL`
day [17-22] `03.16`
day_type1 [17-22] `03.16`
num [37-43] `159,50`
num_type1 [37-43] `159,50`
MATCH 2
1. [55-59] `CALL`
day [60-66] `MAR 16`
day_type2 [60-66] `MAR 16`
num [80-86] `159.50`
num_type2 [80-86] `159.50`
MATCH 3
1. [97-100] `PUT`
day [112-120] `15/01/16`
day_type1 [112-120] `15/01/16`
num [101-104] `2.5`
num_type2 [101-104] `2.5`
MATCH 4
1. [131-134] `PUT`
day [150-158] `15.01.16`
day_type1 [150-158] `15.01.16`
num [162-166] `2,50`
num_type1 [162-166] `2,50`
MATCH 5
1. [172-175] `PUT`
day [191-199] `9 OCT 13`
day_type4 [191-199] `9 OCT 13`
num [203-207] `2,50`
num_type1 [203-207] `2,50`
MATCH 6
1. [213-216] `PUT`
day [232-241] `29 FEB 16`
day_type4 [232-241] `29 FEB 16`
num [245-249] `2,50`
num_type1 [245-249] `2,50`
例如:16 年 2 月 29 日
|(?<day_type4>\d+\s\w{3}\s\d{2})
说明:
|或
(?<day_type4>组名day_type4
\d+\s\w{3}\s\d{2}日格式
\d数字
\s空白
@987654334 @3个字母单词