我们假设我得到了这一行:
|125148 Schalter f GLE GÜ 90/80Z nei PL 80 16AJ
想要匹配以下两个部分:
16AJ可以用作“断点”,所以从数字后面的第一个字母到“断点”的任何东西都应该在一个组中匹配。
我以某种方式使用此正则表达式^\|([0-9])+(.)+(?=\s+16AJ)
,但我的第一组包含8个字符,而我的第二组不包含任何内容。
请参阅此demo
我错过了什么?为什么我的第二组是空的?
答案 0 :(得分:3)
^\|([0-9])+(.+)(?=\s+16AJ)
^^
你需要将量词内部带到捕获组。
答案 1 :(得分:1)
您可以使用此正则表达式:
^\|([0-9]+)\s+(.+?16AJ)
在Java中:
^\\|([0-9]+)\s+(.+?16AJ)
这会在第一组中为125148
,在第二组中为Schalter f GLE GÜ 90/80Z nei PL 80 16AJ
。
答案 2 :(得分:1)
第二组不是空的。您在第一组中捕获8
,在第二组中捕获0
,这正是我对该正则表达式的期望。您需要将量词放在捕获组中。按照你的方式,你一次捕获一个角色,每次都覆盖以前捕获的角色。
我认为这是你正在尝试的:
^\|([0-9]+)\s+(.+?)\s+16AJ