javascript - 如何在javascript中从正则表达式的开头拆分字符串
问题描述
例如,我在字符串中有一些数据
const rawData = `1 Jon Doe 3434 535 3 3 353 HI 3535
2 Jane Smith 23 5235 5 5 2352 HELLO 3543
3 Some Guy 4534 35 5345 4 5345 MEOW 4354`
我想使用 .split() 方法使每一行(从订单号开始到最后一个值的末尾)在数组中都有自己的值。
我努力了
rawData.split(/([0-9]+\s+[A-Z][a-z])/g);
正则表达式找到一个数字后跟一些空格,然后是一个大写字母和一个小写字母(订单号直到名字的开头)
这返回
["", "1 Jo", "n Doe 3434 535 3 3 353 HI 3535", "2 Ja", "ne Smith 23 5235 5 5 2352 HELLO 3543", "3 So", "me Guy 4534 35 5345 4 5345 MEOW 4354"]
我想通过在正则表达式的开头拆分字符串来获得 3 个值。所以我想结束:
["1 Jon Doe 3434 535 3 3 353 HI 3535", "2 Jane Smith 23 5235 5 5 2352 HELLO 3543", "3 Some Guy 4534 35 5345 4 5345 MEOW 4354"]
我可以想到一个解决方法,使用 for 循环在之后加入数组中的值。我很好奇是否有办法在一条线上做到这一点。谢谢!
编辑
我刚刚在正则表达式中发现了前瞻,这很有效:
rawData.split(/\s(?=\d+\s+[A-Z][a-z])/g);
解决方案
为什么不按新行拆分?
const rawData = `1 Jon Doe 3434 535 3 3 353 HI 3535
2 Jane Smith 23 5235 5 5 2352 HELLO 3543
3 Some Guy 4534 35 5345 4 5345 MEOW 4354`,
result = rawData.split(/\n/);
console.log(result);
推荐阅读
- testing - 如何减慢 TestCafe 中的测试执行速度?
- java - 在 GraphQL 中不能有带有嵌套字段的输入类型。错误:预期类型是 GraphQLInputType,但不是
- javascript -
在插入之后添加 - php - 如何在日期时间字符串中以分钟为单位添加时间?
- python - 每帧带有自定义叠加层的 FFMPEG H264
- awk - 从文件中删除与另一个文件的空白行相对应的行
- c++ - C++如何知道向量中的哪个元素
是派生的*? - azure-functions - 对相同的天蓝色时间触发功能使用不同的时间
- java - Maven:要获得最新版本 mvn clean 然后 mvn package 工作正常,但 mvn clean package 不能
- html - 如何使侧边栏默认折叠?