正则表达式:在字符之间创建空组,包括当它们之间没有任何内容时

regex: create empty groups between characters including when theres nothing between

我有一个字符串,例如:

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>

我可以得到组 0 = EB 和组 12 = U 就好了。但我终究无法弄清楚如何让 * 之间的那些空组。

我需要一些东西来查看每个“”并说“捕获所有正确的东西直到你到达下一个””,如果下一个字符是“*”那么该组为“空”。

用例是这个原始数据是用星号之间的所有内容作为其他软件中的组进行解析的,所以我试图弄清楚如何自己实现自动化。

(?!\*)([^*]*)(?<!\*)

生成 EB、C、30、23、50.00、U .. 但它不会为空组创建组,因为“.”正在寻找一个真实的角色。

如何让连续3个*吐出两个空组?

谢谢。

这是您的问题的一种解决方案。


正则表达式

(?<=\*)[^\*]*(?=\*)
  • (?<=\*) 在左边 (?=\*)
  • 寻找一个 *
  • 在右侧寻找 *
  • [^\*]* 寻找介于 而非 *
  • 之间的任何东西

示例输入输出

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:   

测试Link:https://regex101.com/r/OQLSCY/1