如何使用正则表达式来获取第八个单词

时间:2012-12-20 01:54:54

标签: regex extract token

Regex的新手 我见过的例子显示搜索非常具体的例外,即。特定的字母组合。

我想要的是抓住第8个字,无论之前是什么,无论这些是什么。

所以这些空间就是指定'单词'

示例行

Sep 20 11:13:18 10.50.3.100 Sep 20 11:13:15 DC1ASM1.dcl.greendotcorp.com Blah Blah Blah

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

由于 雷克斯

3 个答案:

答案 0 :(得分:3)

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

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

绑定到该行的开头,忽略 [任何字符但空白] 1次以上的7个连续模式然后[单个whitespsace字符]

如果您愿意,可以使用\w代替\S更具体地说明“字词”。

答案 1 :(得分:1)

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

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

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

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

要同时支持标签,请使用以下表达式。

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

答案 2 :(得分:1)

尝试类似

regex = "([^\s]+\s+){7}(?<eighthword>[^\s]+)"