如何编写正则表达式提取每个alphanumeric pattern分段字符串
正则匹配方案
适配你场景的正则表达式
/\d{8} - .*?(?=\s*\d{8} - |$)/g
正则各部分说明
\d{8}:匹配8位格式的日期前缀,和你示例中的19990101格式完全匹配,比无长度限制的\d+匹配精度更高-:匹配前缀后面的横杠加空格固定格式.*?:非贪婪匹配任意字符,避免过度匹配吞掉下一个条目的前缀(?=\s*\d{8} - |$):正向零宽预查,确保当前匹配的终止位置要么是下一个条目的日期前缀(前缀前可包含空白字符),要么是整个字符串的末尾,预查内容不会计入匹配结果,刚好实现两个条目的拆分
使用示例(JavaScript环境)
const rawStr = '19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit'; const matchReg = /\d{8} - .*?(?=\s*\d{8} - |$)/g; const splitResult = rawStr.match(matchReg); // splitResult 就是你需要的两个独立字符串组成的数组: // [ // '19990101 - John DoeLorem ipsum dolor sit amet', // '19990102 - Elton Johnconsectetur adipiscing elit' // ]
拓展说明
如果你的日期前缀不是固定8位数字,可将正则中的\d{8}替换为\d+,修改后的正则为/\d+ - .*?(?=\s*\d+ - |$)/g,同样可以完成匹配。
内容的提问来源于stack exchange,提问作者user16452533
相关产品推荐
相关产品推荐

