括弧内のテキストを一致から除外する正規表現
php エディタ Banana は、強力で一般的に使用される文字列処理ツールである正規表現を紹介します。正規表現を使用すると、文字列を照合するときに括弧内のテキストを除外できます。これは、複雑なテキスト データを処理する場合に非常に便利です。単純な構文ルールにより、文字列のフィルタリングと抽出が容易になり、データ処理の効率と精度が向上します。 Web ページの開発、データ処理、テキスト分析の実行のいずれにおいても、正規表現を習得することは必須のスキルです。一緒に正規表現を学び、文字列処理能力を向上させましょう。
質問の内容
次のテキストが与えられます:
リーリーそのテキストのすべての &&
に一致する正規表現を作成しようとしていますが、括弧の間にあるものは除外されます (したがって、value3 と field4 の間の && は無視される必要があります)。次の正規表現を使用してこれを行うことができました: (\&{2})(?![^\(]*\))
[これは機能し、必要なことを行っています] しかし、問題は、否定先読みをサポートしていない golang を使用していることです。 否定先読みなしでを実行する方法はありますか?括弧はネストできません。
基本的には &&
で分割したいのですが、括弧内の内容を無視して、次のような結果になります。
リーリー
###ありがとう!
回避策
必要のないものはすべて一致させてキャプチャせず、必要なすべてを一致させてキャプチャする (つまり、キャプチャ グループに保存する) テクニックを使用できます。 。これを行うには、次の正規表現を使用できます。
リーリーは、「括弧で囲まれた文字列と一致するか、(
|) は文字列 "&&"
と一致し、キャプチャ グループ 1 に保存します。」となります。考え方は、(コード内で) キャッチされなかった一致を無視することです。
次の文字列については、一致 (
s で表される) とキャプチャ ("c"
s で表される) が表示されます。
リーリー
######デモ######
文字列 (
) の先頭では、\([^\]]*\) も
(&&) も一致しないため、文字列ポインタは f
まで 1 ビット進みます。ここでも一致するものはないため、文字列ポインタは 1
まで 1 文字進みます。これは、最初の &
に到達するまで (一致せずに) 継続されます。 \([^\]]*\)
は一致しませんが、(&&)
は一致します。この試合はすでにキャプチャされているため (グループ 1 をキャプチャ)、この試合に興味があります。
その後、文字列ポインタは (
に到達するまで、一度に 1 文字ずつ進み、一致するものが見つからなくなります。この時点では、({f3} == v3 && {f4} == v4)
は
と一致しますが、キャプチャされないため、気にしません。これは文字列の終わりに達するまで続きます。 .
または、正規表現を使用することもできます
リーリー
を入力し、各一致の最初の文字を確認します。 (
の場合は対戦を諦めます。
が見つかるたびに、それを (コード内で) 別の (おそらく空の) 文字列に置き換えて、(何らかの目的で) 文字列内のオフセットを取得するか、単純にカウンターをインクリメントします。文字列内の一致の数。もちろん、これはこれらの文字列を一致させたい理由によって異なります。
以上が括弧内のテキストを一致から除外する正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











この記事では、Goのパッケージインポートメカニズム:名前付きインポート(例:インポート "fmt")および空白のインポート(例:_" fmt")について説明しています。 名前付きインポートはパッケージのコンテンツにアクセス可能になり、空白のインポートはtのみを実行します

この記事では、Webアプリケーションでのページ間データ転送のためのBeegoのnewflash()関数について説明します。 newflash()を使用して、コントローラー間で一時的なメッセージ(成功、エラー、警告)を表示し、セッションメカニズムを活用することに焦点を当てています。 リミア

この記事では、MySQLクエリの結果をGO structスライスに効率的に変換することを詳しく説明しています。 データベース/SQLのスキャン方法を使用して、手動で解析することを避けて強調しています。 DBタグとロブを使用した構造フィールドマッピングのベストプラクティス

この記事では、ユニットテストのためにGOのモックとスタブを作成することを示しています。 インターフェイスの使用を強調し、模擬実装の例を提供し、模擬フォーカスを維持し、アサーションライブラリを使用するなどのベストプラクティスについて説明します。 articl

この記事では、GENICSのGOのカスタムタイプの制約について説明します。 インターフェイスがジェネリック関数の最小タイプ要件をどのように定義するかを詳しく説明し、タイプの安全性とコードの再利用性を改善します。 この記事では、制限とベストプラクティスについても説明しています

この記事では、goで効率的なファイルの書き込みを詳しく説明し、os.writefile(小さなファイルに適している)とos.openfileおよびbuffered write(大規模ファイルに最適)と比較します。 延期エラー処理、Deferを使用し、特定のエラーをチェックすることを強調します。

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

この記事では、トレースツールを使用してGOアプリケーションの実行フローを分析します。 手動および自動計装技術について説明し、Jaeger、Zipkin、Opentelemetryなどのツールを比較し、効果的なデータの視覚化を強調しています
