2017-05-30 62 views
1

我有以下数据如何使用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

我想你已经快到了。

如果通过添加一个?背后使组中间可选的,它匹配即使有双引号之间没有任何东西:

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

或者你可以匹配中间部分*倍,而不是的+倍,这意味着一次或多次,并通过这一点,如果部分是空的不匹配:

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

+0

真棒感谢队友... – user3332404

相关问题