regex - 正则表达式:在字符之间创建空组,包括之间没有任何内容时
问题描述
我有一个字符串,例如:
EB*C*IND*30***23*50.00*****U
我需要为 * 之间的任何内容创建组。
例如这应该是:
Group 1: C
Group 2: IND
Group 3: 30
Group 4: <empty>
Group 5: <empty>
Group 6: 23
Group 7: 50.00
Group 8: <empty>
Group 9: <empty>
Group 10: <empty>
Group 11: <empty>
我可以得到 Group 0 = EB 和 Group 12 = U 就好了。但我一生都无法弄清楚如何在 * 之间找到那些空组。
我需要查看每个“ ”并说“捕获所有内容直到您到达下一个“ ”,如果下一个字符是“*”,则该组是“空的”。
用例是,这些原始数据被解析为星号之间的所有内容作为其他软件中的组,所以我试图弄清楚如何自己完成它以实现自动化。
(?!\*)([^*]*)(?<!\*)
产生 EB, C, 30, 23, 50.00, U .. 但它不会为空组创建组,因为“。” 正在寻找一个真实的角色。
我如何连续获得 3 个 * 以吐出两个空组?
谢谢。
解决方案
这是您的问题的一种解决方案。
正则表达式
(?<=\*)[^\*]*(?=\*)
(?<=\*)
*
在左侧寻找 a(?=\*)
*
在右边寻找[^\*]*
寻找介于两者之间的任何东西*
示例 IO
Input: EB*C*IND*30***23*50.00*****U
Output:
Match 1: C
Match 2: IND
Match 3: 30
Match 4:
Match 5:
Match 6: 23
Match 7: 50.00
Match 8:
Match 9:
Match 10:
Match 11:
推荐阅读
- flutter - 如何在层次结构中紧随其后的小部件之上为颤振小部件设置动画?
- sql - SQL - 在选择中选择
- parallel-processing - 是否可以在 Apache Flink 中使仅地图任务并行执行
- reactjs - 在单页应用程序中使用 cookie 功能时出错
- javascript - 打字稿打字封装
- javascript - 如何选择具有特定名称而不区分大小写的索引?
- javascript - 在父组件中调用子方法
- ruby - 为什么这些方法为相同的操作返回 Rational 和 Integer
- tensorflow - lstm的蒙特卡洛经常性辍学
- python - 重命名后获取文件名