我有以下数据
May 18 22:15:04 172.24.11.74 "abc","5","0",........
我想只捕获abc它可能是任何东西(abc,bcd,aaa或它可以是空的),所以我想忽略5月18日22:15:04 172.24.11.74。在紧接着比赛之后,它应该停止。因此,简单来说,我想要匹配第一个""之间的所有内容。请帮助我理解如何实现它。我试过跟着
(?<=")([\w\s]+)(?=")
只有当第一个双引号具有某些值时,它才能正常工作。但是当它为空时它会进一步移动并在双引号中捕获下一个值。例如,对于以下消息,它捕获5。
May 18 22:15:04 172.24.11.74 "","5","0"
我希望我清楚我的要求。
答案 0 :(得分:1)
我想你差点就到了。
如果您通过在其后面添加?
使中间组成为可选组,则即使双引号之间没有任何内容,它也会匹配:
(?<=")([\w\s]+)?(?=")
或者你可以匹配中间部分*次而不是+次,这意味着一次或多次,如果部分为空则不匹配:
(?<=")([\w\s]*)(?=")