問題タブ [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.
regex - 正規表現を使用して、単一の単語の文字列とハイフンでつながれた文字列の両方に一致させるにはどうすればよいですか?
正規表現を使用して特定の文字列の後の最初の単語を照合しようとしていますが、すべてのインスタンスを適切に機能させるのに苦労しています。2つの文字列があるとしましょう:
Site Code: foobar
Site Code: hello-world
今、正しい(?<=\bSite Code:\s)(\w+)
リターンを使用していますが、代わりに必要なときにfoobar
のみリターンします。hello
hello-world
そこで、(?<=\bSite Code:\s)(\w+)(-\w+)
ハイフンで区切られた単語を拾うために表現を に変更しましたが、ハイフンで区切られていない単語は無視されます。
同じ式から と の両方を取得する方法はありfoobar
ますか?hello-world
php - 定量化された空白で停止する否定的な後読み?
<p>
HTML フラグメント内の各リスト要素を囲むタグを挿入する必要があります。これにより、ネストされた段落が作成されてはなりません。そのため、先読み/後読みアサーションを使用して、コンテンツが既に段落タグで囲まれているかどうかを検出したいと考えています。
これまでのところ、次のコードを思いつきました。
この例では、負の後読みアサーションを使用して、終了タグと任意の空白が前にない</li>
各終了タグに一致させます。</p>
驚いたことに、次の出力が得られます。
開始タグの挿入は期待どおりに機能しますが、最後のリスト要素に追加のタグが挿入されていることに注意してください!</p>
\s*
負の後読みアサーションが使用されている場合、正規表現で空白 ( ) が完全に無視される理由を誰かが説明できますか?
さらに重要なことは、前述の目標を達成するために他に何を試すことができるかということです。
regex - 負の後読みを使用した R の正規表現
したがって、次のデータがあります。たとえば、「my_data」と呼びます。
私が望むのは、my_data$Storm.Type の各要素が嵐であるかどうかを分類することですが、熱帯暴風雨を嵐として含めたくありません (個別に分類します)。
私は次のコードを書きました:
ただし、これは「SEVERE STORM」を嵐として返すだけです (ただし、SNOWSTORM AND HIGH WINDS は除外します)。ありがとうございました!
regex - 正規表現で別の単語の後に来ない単語を見つける
別の特定の単語の後に来ない特定の単語に一致させるために使用する正規表現パターンは何ですか?
例えば:
「xyz」の後に来ない「abc」を探しているので、以下が一致します。
そして、以下はしません:
ありがとう!
python - 後ろ読みで長さが異なる「または」のpython正規表現
コマンドを含む多くのログがあります。「useradd」を含むすべてのログをフィルタリングしましたが、いくつかの誤検知を破棄したいと思います。
- ... /etc/default/useradd ...
- ... .../man8/useradd ...
問題は、偽陽性と実際のコマンドを含む行を見たいということです (テストケースを参照)。
ログアナライザープログラムを使用しているため、(1 つ以上の) Python 正規表現しか使用できません。したがって、実際の Python プログラムはありません。これらは私が試した表現です:
他の質問への回答では、先読みを使用できるように正規表現が変更されましたが、ここでこれがどのように可能かわかりません。
[編集: いくつかのテストケースを追加]
regex - 正規表現の否定後読み - pcre
トップ レベル ドメインとそれに続く 5 桁で一致するルールを作成しようとしています。私の問題は、既存のpcreが私が説明したものと一致しているが、必要なときにURLのはるかに後で一致するために発生します。他の場所ではなく、TLD の最初の出現時に一致するようにします。これを確認する簡単な方法は、「/」文字が先行していない時点で TLD を照合することです。私は否定的な後読みを使用しようとしましたが、それは1文字しか見返さないため、うまくいきません。
例: 現在の動作状況
.com/12345 と一致しますが、URL の最初の TLD ではないため、この一致は望ましくありません
例: どのように機能させたいか
.net/12345 で一致し、.com/12345 での後の一致を無視します
私の今の表情
編集:将来誰かがこの同じ問題を抱えた場合に備えて、おそらく問題がより明確になるように書き直しました。
regex - Perl regexp - 特定のプレフィックスがない限り、文字列内のすべての数字を # に置き換えます
特定のプレフィックスがない場合、文字列内のすべての数字を「#」に置き換えようとしています。数字は、単語の一部として表示される場合もあれば、単独の単語として表示される場合もあります。
たとえば、プレフィックスとして ABC を使用すると、これが望ましい結果になります。
入力:
結果 (2 行目と 3 行目に ABC と数字があることに注意してください):
私は regexp: の後ろに否定的な外観でそれをやろうとしましたs/(?<!ABC)\d+/#/g
。この場合、ABC の後の最初の桁のみが置き換えられず、残りは置き換えられます。
私の次のステップは、文字列を を含む部分に分割ABC\d+
し、他の部分で単純な置換を実行することです。
複数の文字列に分割せずに全体を行う方法についてのアドバイスをいただければ幸いです。
ありがとう!
編集 1: aac を適切な位置に戻しました。編集 2: 関連する場合に備えて、perl 5.8.5 を使用しています。私が制御していないコードとの互換性の問題により、新しいバージョンに更新できません。