所以目前这个字符串:为什么perl正则表达式不像我所需要的那样贪婪?
!NAME: "Slot 10 SubSlot 0"
有可能是最后的引号后一些东西,但这是无关手头的任务。
我的目标是,我想捕获插槽后的所有内容,直到最后一个引号出现为止。
我已经尝试了两种正则表达式的任务
/^!NAME:\s+\".*(Slot[\w|\s|\d+]+)\"/;
另:
/^!NAME:\s+\".*(Slot.+)\"/;
但这些仅捕获
Slot 0
什么来后插槽可以完全不同。它可以是任何东西,如:
'Slot 4' (this works, but the capture string will not always be this small)
'Slot 4 Subslot 12 Internal Subslot 14 External'
'Slot 75 Internal Slot 12 External'
,我们肯定知道的唯一的事情是,我们希望将“老虎”,开头,并且部分将用引号结束。其他任何东西都在空中。
我所显示的是什么问题?特别是第二个,因为我认为'。'运营商是贪婪的,会尽可能多地捕获?
该脚本的目的是捕获这些细节以便在另一个程序中解析。
因为'。*'是贪婪的,所以你得到的“Slot”是最后一个。使用regex101.com测试您的模式,并使用调试器查看会发生什么。 –
你为什么要逃避双引号?这在Perl正则表达式中不需要。 –