問題タブ [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 - 行頭にない二重空白を見つけるための正規表現
= などを並べるために多くの空白が追加されている古い「フォーマットされた」コードに苦労しています。
この例では、実際にはある程度の意味がありますが、ほとんどの場合、コードが変更されて、空白が役立つというよりも混乱を招く状態になっています。
私がやりたいことは、すべての二重(またはそれ以上)の空白を単一のスペースに置き換えることですが、もちろんインデントを維持したいと思います。したがって、行頭にない二重(またはそれ以上)のスペースを識別するための正規表現を探しています。私は否定的な後読みを試しましたが、うまくいかないようです:
ヒントはありますか?ああ、私は Ultraedit (Perl 正規表現エンジン) を使用しているので、正規表現は「UE 互換」である必要があります。
EDIT : UE は行ごとに正規表現の行を評価しません。改行は、ドキュメントである長い文字列の単なる文字であり、問題を少し複雑にします。
python - 特定のキーワードで始まらない括弧内の文字列を抽出する方法 (アサーションの後ろに否定的な外観がありますか?)
以下の文字列 (for または or で始まらないもの) から (テスト) 文字列の文字列位置を見つけたいと思います。
ネガティブルックビハインドアサーションを使用して特定の文字列を見つけることは可能ですか? 私はこの正規表現を使用していましたが、何か不足しています:
or ステートメントを後読みアサーションで組み合わせることもできますか?
注: test は任意の文字列にすることができます:
regex - 単一のスペースで区切られた単語と複数のスペースで区切られた単語を一致させる方法
以下のようなテキストからキーと値を分離する必要があります
学生ID:0
部門ID=18432
名前XYZ
上記の例では、Student ID、Department ID、およびNameがキーであり、0,18432、XYZが値です。キーは、:、=または複数のスペースで値から区切られます。などの正規表現を試しました
私が直面している問題は、単語が1つのスペースで区切られている場合と、複数のスペースで区切られている場合を特定することです。
私が取得する出力は、行がStudent ID:0キーがStudent、値がID:0で、キーが必要な場合はStudent ID、値が0です。Subjects:やComputer Architectureのような行の場合、キーにはSubjectsとComputerArchitectureが必要です。後で値やコロンがないときにロジックがあります。前のキーに文字列を追加して、Subjects = Computer Architecture; Advanced NetworkSecurity2のようになります。
更新:ルックビハインドオペレーターを使用していることを示してくれた池上に感謝します。しかし、私はまだそれを解決するのに問題があるようです。
つまり(?<!\s\s)\s* [:=]\s*|\s*
、2つ以上のスペースがある場合はすべてのスペースを消費し、2つの連続するスペースがない場合は、:または=を探してスペースを消費します。したがって、以下の行を式に渡すと、$ 1=Nameおよび$2= ABC XYZを取得する必要がありますか?
私が取得しているように見えるのは、キーが空で、値がNameABCXYZです。
regex - ActionScript の否定後読み
最も一般的な顔文字に一致する正規表現を作成しようとしていますが、リンク内にある場合はそうではありません。
私の絵文字は
:P
=P
:-P
=-P
:)
:-)
=)
=-)
:/
=/
:-/
=-/
:o
=o
:-o
=-o
:(
:-(
=(
=-(
:D
:d
:-D
:-d
=D
=d
=-D
=-d
http://
顔文字を一致させたくない:/
http://something.com?feature=player
また、顔文字を発生させたくありません:p
次のように複数の絵文字を続けて入力できるようにしたいので、スペースを区切り記号として使用することはできません。
:):):)
ほとんど機能している現在の正規表現は次のとおりです。
問題は、すべてではなく、最初の絵文字の一致のみがリンクで省略されることです。
Grant Skinner の Regexrを使用してテストしています。
python - 文字がない限り、Python正規表現は一致します
別の正規表現に問題があります。これについては、私のコードはパターンを探すことになっています:
ただし、あまりにも積極的に一致しています。たまたま「殺す」という単語が含まれている文と一致します。ただし、パターンは、テキストのさらに下の桁に達するまで収集を続けます。特に、それは一致しています:
これは私が求めている行動ではありません。このパターンが1つの文の中に見つからない場合は、失敗させたいと思います。
私が疑似コードで実装しようとしている解決策は次のとおりです。
失敗した実装は次のようになります。
「後読み」を試しましたが、幅を指定する必要があります。上記で私がやろうとしているのは、「kill」の末尾に一致し、その後に数字以外の文字が続くことですが、ピリオドには一致しません。それ以外は、後の数字の前に自由に続くことができます。
悲しいことに、このコードは私のテストではまったく同じように動作します。どんな助けでもいただければ幸いです。
python - Python 正規表現の負の後読み
このパターン(?<!(asp|php|jsp))\?.*
は PCRE では機能しますが、Python では機能しません。
では、この正規表現を Python で動作させるにはどうすればよいでしょうか? (パイソン2.7)
python - 負の先読みと正規表現の後ろを組み合わせる
AND"."
の前に数字が続く場合を除いて、すべての文字列を分割する正規表現が必要です。"."
例:
"hello world.foo 1.1 bar.1"
==>["hello world","foo 1.1 bar", "1"]
私は現在持っています:
しかしそれは与える:
しかし、最後の"."
有効なものが見つかりません。
javascript - GWTで正規表現を一致させることができません
テキストの例:公園では、子供が遊んでいます。子供は背が高い。子供は遊んでいる別の子供を見ています。
最初の文の「子」、2番目と3番目の文の「子」は一致させたいが、3番目の文の「子」は一致させたくない。つまり、「Child」または「child」と一致しますが、「another」という単語が続く場合は一致しません。
ネガティブルックビハインドを使ってできると思った
しかし、有効な正規表現を生成するための構文を正しく取得できないようです。
構文を正しく理解できたとしても、GWTでそれを実行できるかどうかはわかりません。これはGWTJavadocからのスニペットです
正規表現構文のJava固有の構造(たとえば
[a-z&&[^bc]], (?<=foo), \A, \Q)
、GWT実装ではなく、純粋なJava実装でのみ機能します...
任意の助けや洞察をいただければ幸いです。
アップデート:
コリンの答えはほとんど機能しますが、完全には正しくありません。
コリンの正規表現は「子」と「子」に一致し、私が尋ねたように「別の子」には一致しません。ただし、いくつかの問題があります。
私がやろうとしているのは、「子供」と「子供」を一致させて、子供の性別に応じて、子供の名前または正しい代名詞のいずれかに置き換えることができるようにすることです。
コリンの正規表現の問題は、「、child」と「.Child」に一致することです。また、それがテキストの最初の単語である場合、「子」とは一致しません。例えば:
「子供は公園に行きました。公園では子供が遊んでいます。子供は背が高いです。子供は遊んでいる別の子供を見ています。」
最初の子は一致しません。後続の一致は、「、child」、「。Child」、および「.Child」です。
コリンが「子供」または「子供」とちょうど一致するようにしようと思いついた正規表現に取り組みましたが、それを機能させることはできません。
c# - 文字列内の単語が存在しない場合にのみ文字列に一致します
SQLスクリプトからテーブル名を抽出しようとしています。私は次の文字列を持っています:
tabley
データベース名のプレフィックスが付いていないため、この文字列と一致させたくありません。私がこれを行おうとしている方法は、データベース名の前の文字列で「on」という単語を検出することです。
私の正規表現は一致tablex
していますが、一致しているので、式を一致させたくありませtbx1
ん。
このような状況でのみ一致させたい。
私の正規表現は私tableX
に与えるべきでありtableY
、データベース名が接頭辞として付けられているためです。
これが私の表現です: