ホームページ  >  記事  >  バックエンド開発  >  「error」または「warning」を含む完全な行と一致する golang を使用した正規表現 (大文字と小文字は区別されません)

「error」または「warning」を含む完全な行と一致する golang を使用した正規表現 (大文字と小文字は区別されません)

王林
王林転載
2024-02-13 08:21:10339ブラウズ

正则表达式与 golang 匹配包含“错误”或“警告”(不区分大小写)的完整行

php エディター Baicao は今日、正規表現を使用して、golang で「エラー」または「警告」(大文字と小文字を区別しない) を含む完全な行と一致させる方法を紹介します。正規表現は、文字列内の特定のパターンに一致するコンテンツを見つけるのに役立つ強力なテキスト パターン マッチング ツールです。 golang で正規表現を使用するには、regexp パッケージを導入し、Compile 関数を使用して正規表現をコンパイルする必要があります。次に、golangで行一致を行うための正規表現の使い方を詳しく紹介します。

質問内容

警告またはエラー (大文字と小文字は区別されません) を含むログ ファイルの各行の完全な行をユーザーに出力したいと考えています。

###したがって:### リーリー ###欲しい:### リーリー

無邪気に始めました

リーリー

印刷のみが行われます (別の実行によるもので、上記の例と正確に一致しない可能性があります)

リーリー

そこで、より一致するように変更する必要があると考えました:

リーリー

しかし、これでは何も表示されません

完全な行と、警告またはエラー (大文字と小文字は区別されません) が一致するすべての行を取得するにはどうすればよいですか?

ps: これは、まったく同じ標準エンジンを使用していないと思われる

go

言語に特化した質問であるため、推奨される文字列を含む正規表現一致行とは異なります。

解決策

質問がカモとしてマークされていることを考慮すると、オペレーターのコメントは次のとおりです。

この質問は重複としてマークされており、リンクされた投稿には、OP の質問に対する回答をまとめるために使用できる多くの回答が含まれていますが、回答は pcre に関連していると思われるため、まだ完全ではありませんそしてre2を使用してください。 リーリー まず第一に、これが op に何も出力しない理由がわかりません:

そこで、より一致するように変更する必要があると考えました:

リーリー

しかし、これでは何も表示されません

すべてのコンテンツを印刷する必要があるため、

:

リーリー リーリー

(?is)...s

フラグは、改行をドットと一致させることを意味します (

.)^1 、また、スター (#) は greedy^2 であるため、「エラー」または「警告」が見つかった場合は、すべてのコンテンツの文字列全体と一致します。 本当の解決策は、「\n」をドットと一致させないことです - s フラグを削除すると、必要なものが得られます: リーリー リーリー

ここでは、

all フォームを使用し、重複しない 一致のみを検索するため、「\n」(有効な行) のインスタンス間で一致します。

「all」が存在する場合、ルーチンは式全体の重複しない連続した一致と一致します。 #^3

完全で明確な線が得られます。 この正規表現を少し厳しくすることができます:

リーリー

(?:...) は

非キャプチャ グループ

#^1

です。これは、個々の「バグ」を気にしていないようです。各一致または「警告」インスタンス。

また、一致を試みる前に行ごとに分割すると、より詳細な制御/精度が得られ、正規表現の推論が非常に簡単になることも示したいと思います。

リーリー リーリー 3 つのサンプルはすべて、このプレイグラウンドにあります。

以上が「error」または「warning」を含む完全な行と一致する golang を使用した正規表現 (大文字と小文字は区別されません)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。