問題タブ [negative-lookbehind]

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 に答える
1161 参照

python - re.sub() ネガティブルックビハインド + ネガティブルックアヘッド

単語が s で終わるか、'単語が s で終わる場合を除いて、文字列から のすべての出現を削除します。他の出現はすべて削除されます。s''s'

例:

私がこれまでに思いついたこと:

これは最初の例と一致し、それを無視します。

ここで動作しています

残りに問題がある

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

python - バージョン文字列を解析し、固定幅を調べるための Python 正規表現

バージョン形式の文字列を解析する Python ライブラリを作成しようとしています。(簡略化された) バージョン文字列の形式は次のとおりです。

<product>-<x>.<y>.<z>[-alpha|beta|rc[.<n>]][.<extra>]][.centos|redhat|win][.snb|ivb]

これは:

  • 製品、すなわちfoo
  • 数値バージョン、つまり:0.1.0
  • [オプション] プレリリース情報、つまり: beta, rc.1,alpha.extrainfo
  • [オプション] オペレーティング システム、つまり:centos
  • [オプション] プラットフォーム、つまり: snb,ivb

したがって、以下は有効なバージョン文字列です。

これらすべての例で、次の正規表現は正常に機能します。

しかし、このタイプのバージョンで問題が発生します (「追加の」プレリリース情報はありませんが、OS やプラットフォームに問題があります):

上記の正規表現では、文字列 #8が、グループではなくredhatプレリリースの extra info で取得されています。pre_xos

でosまたはプラットフォーム文字列を選択しないように、後読みを使用してみましたpre_x

あれは:

reこれは、Python の標準モジュールが可変幅の後読みを受け入れることができる場合にうまく機能します。私のライブラリは、依存関係を制限したい多数のマシンに配布される可能性が非常に高いため、正規表現を使用するのではなく、標準モジュールに固執することをお勧めします。

同様の質問も見てきました: thisthis、およびthisは適用できません。

これを達成する方法についてのアイデアはありますか?

私の正規表現リンク: https://regex101.com/r/bH0qI7/3

[興味のある方のために、これは私が実際に使用している完全な正規表現です: https://regex101.com/r/lX7nI6/2]

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

.net - 先読みと後読みを単一の正規表現演算子に統合する

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

regex - perl regex は、次の貪欲なキャプチャから離れて負の後読みを停止します

perl v5.22.0 の簡単な例を見てみましょう:

それは印刷します:

しかし、私は変わるとは思っ$dataていませんでした。以前のバージョンの perl 5.x も試してみましたが、同じ結果でした。

逆に、同じ正規表現を使用したこの文字列が置換を引き起こすことを期待していますが、そうではありません。


なぜこれが起こるのかわかりません。どちらの場合も、アスタリスクは貪欲であると想定されています。最初の例と2 番目の例と比較して、否定的な後読みグループを作成する$1と考えました。perl を使用する場合の Regex101 は次のように述べています。\nbarbaz

量指定子: * ゼロから無制限の回数まで、必要に応じてできるだけ多くの回数を返します。

では、この場合、否定的な後読みが返されるとどうなるでしょうか?

タイトルが示すように、本当の問題は、後読みがその 2 番目のグループを飲み込むのを止めたいということです。残念ながら、これは 1 文字ではありません。これは、例を理解しやすくするためのものです。また、perl では、たとえば「可変長の後読みは正規表現では実装されていません」など、否定的な後読みでできることには多少制限があります。可能であれば、perl 5.8 と互換性のある回答をお願いします。ありがとう

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

regex - XML ログ ファイルの正規表現

私が変更できないレガシー システムは、1 日あたり 5 ギガのほとんどひどい XML ログを送り出し、取り込みライセンスを吹き飛ばしています。1 分間に 1000 回以上発生する詳細エラーには 2 つのクラスがありますが、数分ごとに 1 つの非常に興味深いエントリが発生します。sed の繰り返しエントリを大幅に短縮し、興味深いものはそのままにしておきたい

だから私が必要なもの
1.迷惑なログエントリの2つのクラスのそれぞれに一致する正規表現(たとえば... 'decimal'...と... 'DBNull'...しかし、時折興味深いものはありません)。
煩わしいエラークラスごとに一致する 1 つの正規表現で問題ありません。2 つ
の sed パスを実行できます。忠実さ。

とキャプチャの作成日を一致させるために、これまでのところ取得しました:

これは近いですが、「10 進数」から冒頭のログ ステートメントに一致する一種の逆貪欲に苦しんでいます 以前のいくつかのエントリ 否定的な後読みをいじりましたが、ひどい頭痛の種になりました

サンプルデータ