我有以下字符串:
Apple---a---1---d---2
Pear---b---3---e---4
Melon---c---9---f---8
我的输入是一个水果,我想从该特定行中选择所有数字。例如:
input: Apple
output: 1 2
input: Pear
output: 3 4
我可以使用 2 个正则表达式来做到这一点:一个用于获取线路,一个用于从线路中获取数字,但有没有办法将其合二为一?
谢谢!
编辑
我看到我必须更具体。问题:是否有可能在一个模式中捕捉到重复?我在 Pear 线上有一个匹配项,我能以某种方式抓住那条线上的数字吗?上面的例子不是现实生活中的,我不想用任何语言实现,不管是不是水果,只是一个简单的例子的抽象问题。
对于上面的示例,我创建了这个:
(?:Pear)(?:[^;\d])*(\d)(?:[^;\d])*(\d)
但正如你所看到的,我通过重复小组达到了我的目标
(?:[^;\d])*
如果我尝试使用乘数来执行此操作,它只会捕获最后一个数字,并且我想要所有数字。据我所知,这个问题没有解决方案,但是stackoverflow不允许我删除这个问题。我正在使用 regex101 进行检查。