ホームページ バックエンド開発 Golang Go の正規表現で特定の文字列以外のものと一致するにはどうすればよいですか?

Go の正規表現で特定の文字列以外のものと一致するにはどうすればよいですか?

Dec 17, 2024 am 04:55 AM

How Can I Match Anything Except a Specific String in Go Regular Expressions?

Go の正規表現での定数文字列以外の一致

Go では、正規表現の一致は regexp パッケージを使用して実行されます。このパッケージは強力な機能を提供しますが、先読みがないなどの制限もあります。これにより、定数文字列を除外する場合のように、特定のパターンを除くすべてのパターンと一致させようとする場合に問題が生じます。

パターン /.*/.*/(.*) を使用する最初のアプローチでは、1 つのパターンのみと一致します。目的の文字列の一部が含まれているため、意図した目的には適していません。代わりに、より包括的なパターンが必要です。

否定文字クラスについて

Go 正規表現は、否定文字クラスを利用して、特定の文字または文字のグループを除外します。たとえば、[^/] はスラッシュ (/) を除く任意の文字に一致します。したがって、最初の .* を [^/]* に置き換えると、/.

以外の 0 個以上の文字と一致します。ただし、文字列の 3 つの部分すべてをキャプチャして、最初の部分 ( 2 つのスラッシュ) には特定の文字列は含まれません。これは、パターンを次のように変更することで実現できます。

r := regexp.MustCompile(`^[^/]+/[^/]+/(.*)`)
ログイン後にコピー

サブマッチ評価での否定の使用

3 つの部分すべてをキャプチャした後、値を配列として抽出できます。文字列の。最初の要素 (val[1]) は、3 番目のスラッシュの後にキャプチャされた文字列を表します。特定の文字列を除外するには、次の条件が評価されます。

if len(val) > 1 && val[1] != "somestring" {
    fmt.Println(val[1])
}
ログイン後にコピー

条件が満たされる場合 (配列内の複数の要素、および val[1] が "somestring" に等しくない場合)、目的の部分文字列と印刷されています。それ以外の場合は、「一致しません」が表示されます。

一致しない正規表現 Web サービスを使用した代替解決策

Go 正規表現には先読みがないため、http://www を利用できます。 .formauri.es/personal/pgimeno/misc/non-match-regex POSIX 互換の否定パターンを生成する Web サービス。このサービスを使用すると、特定の文字列の否定パターンを取得できます。

結論

Go の正規表現機能は特定の面で制限されていますが、効果的な回避策はあります。必要なマッチング機能を実現します。否定された文字クラスと慎重な部分一致評価を活用するか、非一致正規表現 Web サービスを使用する前述の代替ソリューションを採用することにより、Go 正規表現を使用して定数文字列以外のものを一致させるタスクを実行できます。

以上がGo の正規表現で特定の文字列以外のものと一致するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golang vs. Python:長所と短所 Golang vs. Python:長所と短所 Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

See all articles