5

正規表現の例の新機能 非常に具体的な例外を検索するショーを見てきました。特定の文字の組み合わせ。

私が欲しいのは、それらの単語が何であっても、前に来るものに関係なく、8 番目の単語を取得することです。

したがって、スペースは「単語」を指定するものです

サンプルラインは

9 月 20 日 11:13:18 10.50.3.100 9 月 20 日 11:13:15 DC1ASM1.dcl.greendotcorp.com 何とか何とか何とか

ホスト名を抽出したいのですが、この場合は「DC1ASM1.dcl.greendotcorp.com」で、常に「Month, Day, Timestamp, IP, Month, Day, Timestamp」パターンが前に付いています。

ありがとうレックス

4

3 に答える 3

3

使用している正規表現のバージョンまたはフレーバーが 100% わからないため、後読みを避け、代わりに非キャプチャ グループを使用します。

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

これは行の先頭にバインドし、[空白以外の任意の文字] 1 回以上] の 7 つの連続したパターンを無視し、[1 つの単一の空白文字]を無視します。

ただし、選択した場合は\w代わりに を使用して、「単語」についてより具体的にすることができます。\S

于 2012-12-20T02:04:42.337 に答える
1

この式は、名前付きグループ内のホスト名をキャプチャしますHostName。常に単一のスペースのみがあると想定しています。

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

2 つの複数のスペースを処理するには、次の式を使用します。

^([^ ]+ +){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 に答える