我试图从字符串中提取“单词”,特别是“日期”字符串组件。
oct 12:30
2023 09:05 04
%yyyy %hh:%ii %mm
mar 2, 1945 * matches "2," instead of 2"
mar 2,1945 * matches "2,1945" instead of "2" "1945"
mar2,1945 * ideally, "mar2" should be "mar" "2"
01-02-03
04:05:06
我想我已经很接近了:((^|%|[0-9]).+?(?=[,:]|\W|$))
但这是将“2,1945”提取为一个项目。我尝试了((^|%|[0-9]).+?(?=[[^,]:]|\W|$))
,但一点帮助都没有。
基本上,我需要每一个字打破白色,或非字母数字字符。(即::/-等),以及它们是否打破了字母/数字模式(即:mar 2应分别匹配mar和2)
3条答案
按热度按时间bjp0bcyl1#
不完全清楚可以提供什么输入,所以我在这里部分猜测。
基于所提供的示例的组合,我建议使用此:
它将匹配可选的
%
,后跟字母,或数字和可选字母。示例:
演示here。
5n0oy7gb2#
你可以尝试用3个捕获组来执行这个正则表达式:
Demo here
dvtswwa33#
但是
%5
是匹配的,如果你不想要它;将\w
改为[a-zA-Z]
。