問題タブ [non-greedy]
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 - Tcl/Expect 正規表現 - 怠惰にしたい (貪欲ではなく)
このサイトは初めてなので、ご容赦ください。私は Tcl/Expect スクリプトに取り組んでおり、次のルーター出力の 4 行目の部分を一致させようとしています (2 つの可能な出力が示されています)。通常は IP アドレスが含まれますが、2 番目のサンプルのような文字列が含まれる場合があります。
別の可能な出力:
正規表現を使用した私の期待文は次のとおりです。
(3 つのバックスラッシュは、Tcl 解析を通過するためのものであり、* は正規表現インタープリターに渡され、リテラル アスタリスクと一致します。)
私の問題は、驚くことではありませんが、これは「貪欲な」一致を行っていることです。貪欲である必要はありません。これが明確にされているデバッグ出力を参照してください。
試合を最初の\r\nで止めてほしい。
したがって、貪欲でない一致の場合、「?」を追加する必要があると考えていたでしょう。次のように:
問題は、これが機能していないように見えることです。デバッグ出力から次のようになります。
あまりにも長い間これを見つめてきたので、助けを求めようと思いました。必要な遅延マッチを取得するために何をする必要があるかについてのアイデアはありますか? この HP-UX サーバーでは、基本的な正規表現だけを使用することに固執していることに注意してください... 拡張正規表現は使用できません。
ありがとう、ジェームズ
regex - vimでの貪欲でない複数行検索
Rubyファイルを検索してすべてのメソッドを見つけようとしています(後で自動置換する前に)。vimでは、次の正規表現を使用します:
ただし、「{-}」を使用しても、ファイルの内容全体が選択されます。
c - Posix 正規表現非貪欲
Perl で使用できるように、C で非貪欲な正規表現を使用する方法はありますか? いろいろ試してみましたが、実際にはうまくいきません。
私は現在、IP アドレスと対応する HTTP リクエストに一致するこの正規表現を使用していますが、*?:
([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1
この例では、常に文字列全体に一致します。
$ ./regtest
127.0.0.1 GET /test.php HTTP/1.1" 404 525 "-" "Mozilla/5.0 (Windows NT HTTP/1.1
python - ネストされたグループから選択/抽出するための Python 正規表現
CHAR(int) と NCHAR(int) を使用して文字列を処理し、これらのインスタンスを ASCII 対応部分に変換しようとしています。例は次のようになります。
VARCHAR(int) に対しては何もしたくないことに注意してください。CHAR(int) と NCHAR(int) の部分だけに対してだけです。上記は次のように変換されます。
|(SELECT TOP 1 CAST(name AS VARCHAR(8000)) FROM (SELECT TOP 1 colid, name FROM [Projects]..[syscolumns] WHERE xtype=U AND id = OBJECT_ID(EN_Empl)
CHAR(int) または NCHAR(int) の両側の「+」は削除する必要があることに注意してください。私は次のことを試しました:
where str
=処理する必要がある生の文字列。
どういうわけか、VARCHAR(8000) がピックアップされています。正規表現を微調整すると、CHAR(int) または NCHAR(int) インスタンスのいずれかのスペースと「+」だけでなく、xtype の後の「=」がなくなります。
誰かが私をこれから引き離してくれることを願っています。
追加のサンプル文字列:
弦"char(124)+(Select Top 1 cast(name as varchar(8000)) from (Select Top 1 colid,name From [Projects]..[syscolumns]
Where id = OBJECT_ID(NCHAR(69)+NCHAR(78)+NCHAR(95)+NCHAR(69)+NCHAR(109)+NCHAR(112)+NCHAR(108)))"
正規表現:r'(\bn?char\((\d+)\)(?:\s*\+\s*)?)'
結果:"|(Select Top 1 cast(name as varchar(8000)) from (Select Top 1 colid,name From [Projects]..[syscolumns] Where id = OBJECT_ID(ENCHAR(78)+NCHAR(95)+NCHAR(69)+NCHAR(109)+NCHAR(112)+NCHAR(108)))"
javascript - なぜ正規表現.*? javascriptの空の文字列にのみ一致しますか?
私.*?
は貪欲ではないと思います、そしてそれは戻るべきですa
regex - Regex の一部を非貪欲にするにはどうすればよいですか?
最終的解決
元の質問
正規表現
パターン
この正規表現は「66 23 Britton Drive」を返しています。「23 ブリットン ドライブ」を返してほしい。次の正規表現のバリエーションを試しました。
うまくいかないパターンの増加
うまくいくパターン