特定の文字列が入っている・入っていない場合もある文字列でのキャプチャ方法が分かりません。
対象文字列
下記のような文字列があります。
aaa bbb ccc at xxxx
ddd eee fff gggg
実現したいこと
正規表現を使って、下記のように取り出したいです(at以降の文字列をキャプチャしない)。
aaa bbb ccc
ddd eee fff gggg
試したこと
常にatがあるのであれば、
(.*?) at.*
等で取り出せるのですが、atが無い場合も取り出したい場合の記述方法が分かりません。
言語はrubyと書きましたが、正確にはfluentdの設定となっています(言語の命令は使えません)。
先読み、後読みを使うのかとも思ったのですが、使い方が分かりませんでした。
正規表現だけで取り出す方法はありますか?
atはat単体のみかataのような先頭にヒットするのかkata的な一部でもヒットするかによります
atは文字列 半角スペース at 半角スペース 文字列になっており、常に文字列の中間にあります(先頭、末尾には無い)。
atが半角スペースに囲まれているとして、atを含む文字が絶対に存在しない担保はないのですね?
はい。" at "を含む文字がない場合もあります。
いやそうではなく、ataとかkataとかが絶対に含まれない保証がないですか?という質問です
残念ながらataやkataは含まれる可能性はあります。システムログをこの正規表現を使って必要なものだけ収集しようとしています。ある意味自由文なので、どの文字列が来るかは分かりません。
fluentdでの使い方を知りたいのならfluentdタグをつけてください。そして、rubyはタグとして不適切なので外してください。
fluentdはrubyで作られており、今回分からなかった部分はfluentdの設定と言うよりはrubyの正規表現部分だったためこのタグを付けましたが、外しました。
回答2件
あなたの回答
tips
プレビュー