5

我见过的正则表达式示例的新手显示搜索非常具体的异常,即。特定的字母组合。

我想要的是抓住第 8 个单词,不管前面是什么,不管那些单词是什么。

所以空格是指定“单词”的地方

采样线将是

9 月 20 日 11:13:18 10.50.3.100 9 月 20 日 11:13:15 DC1ASM1.dcl.greendotcorp.com Blah Blah Blah

我想提取主机名,在本例中为“DC1ASM1.dcl.greendotcorp.com”,它总是以“月、日、时间戳、IP、月、日、时间戳”模式开头。

谢谢雷克斯

4

3 回答 3

3

我不是 100% 确定您使用的是什么版本或风格的正则表达式,所以我会避免后视,而是使用非捕获组:

^(?:\S+?\s){7}(\S+)

绑定到行首,忽略[any character but whitespace] 1+ times] 然后 [one single whitespsace character]的 7 个连续模式。

但是,如果您选择了,您可以通过使用\w而不是更具体地了解“单词”。\S

于 2012-12-20T02:04:42.337 回答
1

此表达式将捕获命名组中的主机名HostName。它假设总是只有一个空格。

^([^ ]+ ){7}(?<HostName>[^ ]+)

两个句柄多个空格使用以下表达式。

^([^ ]+ +){7}(?<HostName>[^ ]+)

要同时支持选项卡,请使用以下表达式。

^([^ \t]+[ \t]+){7}(?<HostName>[^ \t]+)
于 2012-12-20T02:04:31.533 回答
1

尝试类似

regex = "([^\s]+\s+){7}(?<eighthword>[^\s]+)"
于 2012-12-20T02:06:27.463 回答