如何使用Regex排除字符串?

时间:2017-05-30 16:11:55

标签: regex

我有以下数据

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"

我希望我清楚我的要求。

1 个答案:

答案 0 :(得分:1)

我想你差点就到了。

如果您通过在其后面添加?使中间组成为可选组,则即使双引号之间没有任何内容,它也会匹配:

(?<=")([\w\s]+)?(?=")

或者你可以匹配中间部分*次而不是+次,这意味着一次或多次,如果部分为空则不匹配:

(?<=")([\w\s]*)(?=")