我试图提取这个字符串中显示的第二个日期,但是我的代码一直只提取gsheet中的第一个日期:字符串:BOT +1 1/1自定义IWM 100 9月12日22日/9月7日22日184/184看跌/看涨@6.13这是我的代码:=正则表达式提取(A3,"({1,2}+[A-Za-z]+{2,4})")我的结果:2022年9月12日预期结果应为:* * 22年9月7日**感谢您的帮助,提前致谢!
zkure5ic1#
考虑到你已经有了一个检测日期的工作公式,你可以试着在括号外添加first,这样它会寻找第一个日期,然后.+会考虑到这两个日期之间会有一些字符,然后你的工作模式会放在括号内,然后只提取最后一部分:
.+
=REGEXEXTRACT(A3,"\d{1,2}\s+[A-Za-z]+\s\d{2,4}.+(\d{1,2}\s+[A-Za-z]+\s\d{2,4})")
ejk8hzay2#
这里有一种方法可以动态提取字符串中的N个日期,或者根据需要提取第二个或第三个日期模式。
N
=index(if(len(A:A),lambda(y,regexextract(y,lambda(z,regexreplace(y,"(?i)("&z&")","($1)"))("\d{1,2}\s"&JOIN("\s\d{2}|\d{1,2}\s",INDEX(TEXT(SEQUENCE(12,1,DATE(2022,1,1),31),"MMM")))&"\s\d{2}")))(regexreplace(A:A,"[\(\)/+]","")),))
如果要选择特定的数字模式,请将公式 Package 在index + number中,如屏幕截图所示
index + number
=index(formula,,pattern number)
ebdffaop3#
要只提取第二个日期,可以按如下所示修改代码:
=REGEXEXTRACT(A3,"\d{1,2}\s+[A-Za-z]+\s\d{2,4}.*(\d{1,2}\s+[A-Za-z]+\s\d{2,4})")
这个正则表达式\d{1,2}\s+[A-Za-z]+\s\d{2,4}.*(\d{1,2}\s+[A-Za-z]+\s\d{2,4})将匹配字符串中的第一个日期和第二个日期,然后只提取第二个日期。
\d{1,2}\s+[A-Za-z]+\s\d{2,4}.*(\d{1,2}\s+[A-Za-z]+\s\d{2,4})
3条答案
按热度按时间zkure5ic1#
考虑到你已经有了一个检测日期的工作公式,你可以试着在括号外添加first,这样它会寻找第一个日期,然后
.+
会考虑到这两个日期之间会有一些字符,然后你的工作模式会放在括号内,然后只提取最后一部分:ejk8hzay2#
这里有一种方法可以动态提取字符串中的
N
个日期,或者根据需要提取第二个或第三个日期模式。如果要选择特定的数字模式,请将公式 Package 在
index + number
中,如屏幕截图所示ebdffaop3#
要只提取第二个日期,可以按如下所示修改代码:
这个正则表达式
\d{1,2}\s+[A-Za-z]+\s\d{2,4}.*(\d{1,2}\s+[A-Za-z]+\s\d{2,4})
将匹配字符串中的第一个日期和第二个日期,然后只提取第二个日期。