問題タブ [lookaround]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
582 参照

php - 正規表現逆参照負先読みアトミック グループ

一重引用符または二重引用符の後に、一致した文字以外の任意の数の文字が続き、その後に一致した文字の 1 つが続きます。

両端の二重引用符で一致する必要があります。ただし、既にテストされた文字は将来の一致に含めるべきではないという点で、一致を所有格にしたいと考えています。

最初の二重引用符の後に別の二重引用符が続くことはないため、一致しないはずです。私は思いついた:

しかし、これは真ん中の一重引用符によって上記の 2 番目の文字列の例と一致します。アトミックグループがこれを達成しない理由がわかりません。アトミックグループ化の他の配置でもこれを達成できませんでした。

また、引用符が存在することを主張しながら、引用符の間にある文字のみを一致させることがまったく可能であれば、それは素晴らしいことです. 後読みアサーションは固定幅であるため、後方参照を使用して、一重引用符または二重引用符のキャプチャされたグループが否定先読みの前に発生することをアサートすることはできません。

0 投票する
3 に答える
232 参照

java - Java正規表現のネストされたルックアラウンド

キャプチャされた文字列が他の2つの文字列の間にあることを確認するために、ルックアラウンドを使用するパターンがあります

つまり、件名の文字列に対して

私の正規表現は次のようになります

だから私はこの正規表現を複数回使用したいのです

次のような正規表現が必要です

私の正規表現が一致するものの前にある「(テスト文字列)」を見つけると言います。

これは正確に機能していないようです。正規表現にルックアラウンドがあり、現在、ルックフォワードに埋め込んでいるためです...この状況を修正するにはどうすればよいですか?

0 投票する
1 に答える
178 参照

php - バランスの取れたネストされた wiki テンプレートを解析し、正規表現によって単一行パラメーターのコンテンツを抽出する

ネストされた文字列または HTML の解析は実際のパーサーで行う方がよいことはわかっていますが、私の場合、単純なテンプレートがあり、テンプレートから Wiki パラメーター 'title' のタイトル コンテンツを抽出したいと考えていました。これを達成するのにしばらく時間がかかりましたが、Lars Olav Torvik ( http://regex.larsolavtorvik.com/ ) の正規表現ツールとこのユーザー フォーラムのおかげで、ここにたどり着きました。誰かがそれを便利だと思うかもしれません。(私たちは皆、貢献したいと思っていますよね? ;-) コメントで注釈を付けた次のコードは、そのトリックを実行します。いずれかのテンプレートにタイトルがない場合に、2 つのテンプレートが混在しないように、アサーションの周りを見てそれを行う必要がありました。

正規表現のコメントにある 2 つの質問については、まだ(?# Questions: …)よくわかりません(?R)\{\{最も外側の定義されたレベル、つまり 2 番目の正規表現行と最後の正規表現行からチェックする内容を取得するということ\}\}ですか? それは正しいでしょうか?また、ブースワークの代替前++と前との違いは何なのか、試されてみるとそう思われます。+(?R)

  1. ページ上の元の wiki テンプレート (最も単純):

    /li>
  2. 交換:

    /li>
  3. 次に、各テンプレートの上に TITLE でタグ付けされたタイトルが出力されますが、タイトルがあった場合のみです。

    /li>

正規表現の理解、またはいくつかの改善に関する私の質問の内部はありますか? ありがとう、アンドレアス。

0 投票する
2 に答える
1689 参照

python - Python 正規表現: 先読み値をキャプチャ (テキストを消費せずにキャプチャ)

正規表現を使用して単語を のグループに分割(vowels, not_vowels, more_vowels)し、マーカーを使用してすべての単語が母音で始まり母音で終わるようにしたいと考えています。

この例では、次のようになります。

問題は、一致が重複することを望んでいることです-母音の最後のセットが次の一致の最初のセットになる必要があります。これは、正規表現を次のように置き換えると、先読みで可能になるようです。

我々が得る:

つまり、私たちは私が望むものと一致しています。ただし、母音の最後のセットは返されません。私が望む出力は次のとおりです。

これは可能だと思います(正規表現が母音の2番目のセットをチェックできる場合、それらを返すことができない理由はわかりません)が、ブルートフォースメソッドを超えてループする方法が見つかりませんそれらを取得し、次の一致の最初の文字を最後の一致に追加し、文字列の最後の文字を最後の一致に追加した後の結果。これを行うためのより良い方法はありますか?

機能する2つのことは、値をキャプチャしながら、先読み値をキャプチャするか、一致するテキストを消費しないことです-どちらの方法も見つかりません。

0 投票する
2 に答える
307 参照

regex - より堅牢な正規表現のルックアラウンド

これは入力文字列です。$table_prefix = 'wp5t3s1tc_';これは、より大きな構成ファイルの一部です。

私はの間で何でも一致させたい''

私が使用している表現は(?<=\$table_prefix(\s{2}=\s\'))(.*)?(?=\')、ルックアラウンドがの両側の空白文字で機能する脆弱な方法のため、あまり良くありません=。構成ファイルが両側に複数のスペースで変更された場合=、式は機能しません。

私はそれがもっと似ているべきだと思っています(?<=\$table_prefix(\s*\=\s*\'))(.*)?(?=\')が、もちろんそれはうまくいきません。

誰かがこの試合を行うためのよりエレガントな方法を簡単に説明できますか?

0 投票する
3 に答える
1248 参照

javascript - Javascript での特定の正規表現の肯定的な外観 (前後|前方|後方)

私は一致/(?=\W)(gimme)(?=\W)/giするか、同様に探しています。私の\W実際の試合を囲むためにゼロ幅の文字であるはずです。

たぶん、いくつかの背景。特定の単語 (常に ) をリテラルのパディングを追加して置き換えたい\w+のですが、それが . で囲まれていない場合に限り\wます。(それは否定的なルックアラウンドのように聞こえますが、JSはそれらをしないと聞きました!?)

(ところで:上記の「ギミー」は、私が置き換えたいリテラルという言葉です。それが明らかでない場合。)

意図が aであり、周囲の文字を置換/コピーできない\Wため、ゼロ幅でなければならないため、(?) ルックアラウンドである必要があります。.replace(...)

したがって、これは機能しません:

ゼロ幅の文字は無視する必要があるため、関数はのみ doMagic(match)を返す (および置換する) ことができます。

私はルックアラウンドの経験が非常に限られており、JS では経験がありません。グラジー。

PS。それとも後読みが必要で、それらは JS でサポートされていません..? よくわかりません?

PS。少しのコンテキスト: http://jsfiddle.net/rudiedirkx/kMs2N/show/ (おおリンク!)

0 投票する
1 に答える
223 参照

php - この正規表現で $ が一致しないのはなぜですか?

GIF ファイルのフレームを区切る次の行があります。

GIF ファイル形式に精通している場合は、これに大きな欠陥があることに気付くかもしれません。先読みはフレーム ヘッダーのみを対象としているため、最後のフレームが検出されません。

代わりに、正規表現を次のように変更すると'/(?P<frame>\x00\x21\xF9\x04.(?P<delay>..).\x00\x2C.*?)(?=\x00\x21\xF9\x04|\x3B$)/s\x3Bはファイル ターミネータ (その後にファイル/文字列の実際の末尾が続きます) であり、すべてが失敗し、一度も一致しません。

Kodosでこれテストしましたが、これはバイナリ データであるため、私ができる最善のことはプレーンテキストの等価物であり、期待どおりに機能しました。関数preg_match('/\x00\x3B$/', $fileContents) 正しく一致しており、16 進エディタでファイルを分析すると、ファイルが本来あるべきレイアウトになっていることが確認されます。

では、なぜ|\x3B$先読みに追加すると完全に失敗するのでしょうか?

注: はい、gif 画像を操作するためのライブラリがあります。この質問は純粋にプロセスに関するものであり、最終結果ではありません。

編集:パイプスペースが実際には問題ではない可能性があることに気づきました。\x00\x21\xF9\x04 正規表現は or のいずれか に一致します(ファイル全体で単独で何度も出現する\x3Bため、これは役に立ちません)。\x3Bパイプスペースの後の複数の文字で問題が発生するようです...一種の。どちらも正規表現全体が失敗する原因になります\x3B$\x00\x3Bただし、 $ を探すだけでは何があっても失敗します。これは、何よりも $ アンカーの問題のようですが、ここで厄介なのはそれだけではないようです。

一致が0件になる順列:

0 投票する
2 に答える
583 参照

regex - JavaScript RegEx、OR による長さゼロの一致 (前後を見てください)

私はこの正規表現を持っており/\b\d\b/、単に1桁の単語に一致します。

ここで、単語境界の代わりにアンダースコア文字を追加したいので"_1_"、アンダースコアを長さゼロの一致として維持しながら、数字も一致させたいと思います (\b のように、マッチに _ が必要です)。

私は、キャプチャグループを使用するのが理想的ではない場合があります。

私はいくつかのポジティブなルック・アヘッド/ビハインド・トリックを試しました。オプションのルックアヘッド/ビハインドを実行して、 のようなことを試み_|\bましたが、これに対する理想的な解決策を見つけることができませんでした。

高度な RegEx トリックに精通していないので、2 つの RegEx でこれを行う前に質問したいと思いました :)

これは JavaScript で実行されます。

0 投票する
2 に答える
122 参照

regex - Perl 正規表現で既に一致したものを効率的に一致させるにはどうすればよいですか?

次の規則に従う必要がある文字列を検証するための正規表現を作成しました。

  1. 少なくとも 1 文字である必要があります
  2. 空白文字を含めることはできません
  3. 最初の文字は句読点であってはなりません
  4. 最後の文字は句読点であってはなりません
  5. 数字が続く句読点で終わることはできません
  6. 他のすべての文字は、. 以外の任意の UTF-8 文字にすることができます/[:@#]

正規表現は次のとおりです。

足りないものがありますか?ルール 5 は適用されません。私はこのようなコードを書くことによってそれを強制してきました:

これを行わなければならない場所がたくさんあるので、すべてを単一の正規表現で実行したいと思います。問題は次のとおりです。「foo,23」などの値を拒否する正規表現は?

0 投票する
2 に答える
309 参照

regex - 特殊文字を使用した正規表現ルックアラウンドは無効ですか?

私はこの正規表現を試しています

このテキストについて John James Taylor

しかし、ここで「後読みで無効なパターン」を取得しています http://www.rubular.com/r/TjD2d4oG5z

John や Joe が前にない "Taylor" と一致させようとしています。

ヒントはありますか?