ホームページ  >  記事  >  バックエンド開発  >  括弧内のテキストを一致から除外する正規表現

括弧内のテキストを一致から除外する正規表現

WBOY
WBOY転載
2024-02-09 21:51:09831ブラウズ

括弧内のテキストを一致から除外する正規表現

php エディタ Banana は、強力で一般的に使用される文字列処理ツールである正規表現を紹介します。正規表現を使用すると、文字列を照合するときに括弧内のテキストを除外できます。これは、複雑なテキスト データを処理する場合に非常に便利です。単純な構文ルールにより、文字列のフィルタリングと抽出が容易になり、データ処理の効率と精度が向上します。 Web ページの開発、データ処理、テキスト分析の実行のいずれにおいても、正規表現を習得することは必須のスキルです。一緒に正規表現を学び、文字列処理能力を向上させましょう。

質問の内容

次のテキストが与えられます:

リーリー

そのテキストのすべての && に一致する正規表現を作成しようとしていますが、括弧の間にあるものは除外されます (したがって、value3 と field4 の間の && は無視される必要があります)。次の正規表現を使用してこれを行うことができました: (\&{2})(?![^\(]*\)) [これは機能し、必要なことを行っています] しかし、問題は、否定先読みをサポートしていない golang を使用していることです。 否定先読みなしでを実行する方法はありますか?括弧はネストできません。

基本的には && で分割したいのですが、括弧内の内容を無視して、次のような結果になります。 リーリー ###ありがとう!

回避策

必要のないものはすべて一致させてキャプチャせず、必要なすべてを一致させてキャプチャする (つまり、キャプチャ グループに保存する) テクニックを使用できます。 。これを行うには、次の正規表現を使用できます。

リーリー

は、「括弧で囲まれた文字列と一致するか、(

|

) は文字列 "&&" と一致し、キャプチャ グループ 1 に保存します。」となります。考え方は、(コード内で) キャッチされなかった一致を無視することです。 次の文字列については、一致 (

"m"

s で表される) とキャプチャ ("c"s で表される) が表示されます。 リーリー ######デモ###### 文字列 (

{

) の先頭では、\([^\]]*\)

(&&)

も一致しないため、文字列ポインタは f まで 1 ビット進みます。ここでも一致するものはないため、文字列ポインタは 1 まで 1 文字進みます。これは、最初の & に到達するまで (一致せずに) 継続されます。 \([^\]]*\) は一致しませんが、(&&) は一致します。この試合はすでにキャプチャされているため (グループ 1 をキャプチャ)、この試合に興味があります。 その後、文字列ポインタは ( に到達するまで、一度に 1 文字ずつ進み、一致するものが見つからなくなります。この時点では、({f3} == v3 && {f4} == v4)

\([^\]]*\)

と一致しますが、キャプチャされないため、気にしません。これは文字列の終わりに達するまで続きます。 . または、正規表現を使用することもできます リーリー を入力し、各一致の最初の文字を確認します。 (の場合は対戦を諦めます。

&&

が見つかるたびに、それを (コード内で) 別の (おそらく空の) 文字列に置き換えて、(何らかの目的で) 文字列内のオフセットを取得するか、単純にカウンターをインクリメントします。文字列内の一致の数。もちろん、これはこれらの文字列を一致させたい理由によって異なります。

以上が括弧内のテキストを一致から除外する正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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