Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用正则表达式获取第八个单词_Regex_Extract_Token - Fatal编程技术网

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

Regex 如何使用正则表达式获取第八个单词,regex,extract,token,Regex,Extract,Token,Regex新成员 我看到的示例显示搜索非常特定的异常,例如特定的字母组合 我想要的是抓住第八个单词,不管前面是什么,不管这些单词是什么 因此,空格表示“单词” 采样线是 9月20日11:13:18 10.50.3.100 9月20日11:13:15 DC1ASM1.dcl.greendotcorp.com诸如此类 我想提取主机名,在本例中是“DC1ASM1.dcl.greendotcorp.com”,它前面总是有“月、日、时间戳、IP、月、日、时间戳”模式 谢谢 Rex此表达式将捕获命名组中的主

Regex新成员 我看到的示例显示搜索非常特定的异常,例如特定的字母组合

我想要的是抓住第八个单词,不管前面是什么,不管这些单词是什么

因此,空格表示“单词”

采样线是

9月20日11:13:18 10.50.3.100 9月20日11:13:15 DC1ASM1.dcl.greendotcorp.com诸如此类

我想提取主机名,在本例中是“DC1ASM1.dcl.greendotcorp.com”,它前面总是有“月、日、时间戳、IP、月、日、时间戳”模式

谢谢
Rex

此表达式将捕获命名组中的主机名
HostName
。它假定始终只有单个空间

^([^ ]+ ){7}(?<HostName>[^ ]+)
^([^]+){7}(?[^]+)
两个句柄多个空格使用以下表达式

^([^ ]+ +){7}(?<HostName>[^ ]+)
^([^ \t]+[ \t]+){7}(?<HostName>[^ \t]+)
^([^]+){7}(?[^]+)
要同时支持选项卡,请使用以下表达式

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

我不能100%确定您使用的是什么版本或风格的regex,因此我将避免后面看,而是使用非捕获组:

^(?:\S+?\s){7}(\S+)
绑定到行首的,忽略7个连续的模式[除空格外的任何字符]1+次]然后[一个空格字符]


不过,如果您愿意,可以使用
\w
而不是
\S
来更具体地描述“单词”。

尝试类似的方法:

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

您使用的是什么语言/工具集?如果您可以访问Unix命令行,则会为此构建
cut
实用程序,因为它看起来像是日志数据。谢谢Michael。这是python(但通过一个工具)+1,用于非捕获组,但您实际上不需要
,因为
\S
\S
是相互排斥的。OP没有说明他使用的是什么正则表达式风格,所以您不知道是否可用。另外,
\w+
在这种情况下不起作用,因为有些单词包含“非单词”字符,如
。如果这对您有帮助,您可以将其视为regex伪代码。请注意,为了您的兴趣,我特意添加了“类似”的内容。设计来给人一个想法。实现留给感兴趣的读者。但是,感谢您对\w的观察。这是有用的部分。也许你想提供一个答案。你能解释一下什么是命名组吗?我想这是你必须知道的事情,因为你链接到了它。你能解释一下regex“风味”中命名组的差异吗?因为你似乎也知道这个有用的主题。我认为我链接到的页面很好地解释了命名组;这就是我链接到它的原因。我之所以提出这个问题,是因为,考虑到问题的介绍性,我认为假设OP在看到命名组语法时会识别它是不安全的。至于我自己给出的答案,它实际上和我的答案是一样的,所以我把他的投了更高的票,这是有道理的。实际上,你能链接到某个地方来解释Brad的语法吗\S+?\S--我不明白是什么?请在此处执行,或者:。另外,我刚刚有一个想法,我想写一个项目,用简单的英语解释你输入的任何正则表达式都在做什么。你认为这是个好主意/有用吗?您似乎是正则表达式的首选对象。^([^]+){7}(?[^]+)非常完美。非常感谢。