問題タブ [regex-lookarounds]
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 - Perl Regex "Not" (否定先読み)
このタイプの正規表現の正しい言い回しがどうなるかはよくわかりませんが、基本的に私がしようとしているのは、例として、「/」で始まり、その後に「bob/」が続かない任意の文字列に一致させることです。 .
したがって、これらは一致します:
しかし、これらはそうではありません
答えは非常に単純だと思いますが、「regex not」をどこでも検索するのに苦労しました。良い結果をもたらす、私が望むものを表すより洗練された言葉があると確信していますが、それが何であるかはわかりません。
編集:探していたものの正しい名前を示すようにタイトルを変更しました
java - 否定先読みを伴う Java 正規表現
ログファイルから情報を解析するために Java で正規表現を作成する際に問題に直面しています。
「timeinstant:任意の文字を含む文字列」という構造が1回からN回繰り返される文字列があります。
timeinstant の形式は "dd/mm/yyyy hh:MM:ss:MMMMMM" (M はマイクロ秒) です。
私がやろうとしているのは、着信文字列に含まれる最後の timeinstant のマイクロ秒を見つけることです。
たとえば、文字列で
m.find()
を指したい "987: pump..."
。これを取得するために、先読みで正規表現を使用しています。
"(\\d{3}:)(?!\\d{4}/\\d{2}/\\d{2}\\s\\d{2}:\\d{2}:\\d{2}:\\d{6})"
しかし、今は(に含まれる)m.find()
を指しています。819
2012/04/02 16:28:51:861819
php - 正規表現 - 遅延制限のある否定的な先読み?
私は正規表現の専門家ではありませんが、数時間後にこの正規表現を構築しました。
大文字と小文字を区別しない:
と との間に文字列が[url=xxxx://yyyy]zzzz[/url]
含まれている場合を除き、パターンを照合します。<div onclick="unveil_spoiler
[url=
[/url]
今、私は同様のチェックを追加しようとして\[url.*?\]
い\[url=
ます\[/url\]
。私は多くの方法を試しましたが、100% 機能する方法を見つけることができるようです。
最初に、正規表現に既に存在するものと非常によく似た別の否定的な先読みを追加しようとしましたが、これは部分的に機能しますが、行の終わりまで、つまり最後まで先読みが通過するように見えます\[/url\]
-各試合で、先読みが必要でした\[/url\]
キャプチャ グループが行うように、最初に停止します。
デバッグ用の文字列は次のとおりです。
投稿の冒頭に投稿された正規表現を使用すると、最初の行の 2 つの一致に完全に一致します。今、私はそれがマッチの中にあるときにマッチを返さないようにしたかったので\[url.*?\]
、私はこの正規表現を試しました:
この:
一致の中にある場合は一致を返しません\[url.*?\]
が、最初の行 (例の文字列) の最初の一致との一致も停止します (最初の正規表現と同様)。つまり、各行の最後の有効な一致のみに一致します。
最初に止まらない先読みの問題だと思いますが、\[/url\]
それを怠惰にする/修正する方法はありますか?
どんな助けでも大歓迎です。
regex - この正規表現の先読みが機能しないのはなぜですか?
一部の IIS Url Rewrites で使用する正規表現を設計しています。目的は、次の URL をキャプチャすることです。
- ルート ディレクトリ内の単なるファイル (ピリオドを含むことで識別) ではなく、
- クエリ文字列を含まず、かつ
- 特定のサブディレクトリのセット、特に「Account」と「Public」に属していない
私の現在の正規表現は次のようになります。
次のテスト セットでRegexPalを使用する:
私の正規表現は最初の 2 つのケースを正しく無視しますが、3 番目のケースではまだ一致しています。ここでの先読みの何が問題になっていますか?
regex - Perlの*修飾子を使用した負の先読みアサーション
テストされた文字列の後に任意の数のスペース(ゼロを含む)が続き、その後に。が続かない場合に一致すると予想される(私が信じている)否定的な先読みアサーション があります。<@> *(?!QQQ)
<@>
QQQ
ただし、テストされた文字列が<@> QQQ
正規表現である場合は一致します。
なぜそうなるのかわからないので、この件について助けていただければ幸いです。
これがテストスクリプトです
このプリント
そして、私は最初の行がになると思っていましたsomething <@> QQQ --> something at w/ QQQ
。
regex - hgignore での奇妙な否定先読み処理
巨大なソース ツリーから、Mercurial で追跡するサブフォルダーを 1 つだけにしたい。
適切な正規表現ツール (Regex Coach、regexpal.com) では、次の手順で十分です (そして理解できます)。
一方 .hgignore は、
先読みグループ内にスラッシュを入れるとすぐに、何も通過しません。
これをバグと呼ぶ前に (おそらく、さらに別の自家製の正規表現パーサーのことでしょうか?) 私は集合知性に尋ねます :-)
一体 hgignore が何に行きたいかについての間接的な手がかりのクレジット
regex - 正規表現の先読み、egrep の使用
ファイルに含まれている場合
egrep '(?=apples)app' file
ラインをピックアップできないのはなぜですか?
MAC で egrep 2.5.1 を使用する
javascript - Chrome と Safari の正規表現の否定先読み
1 つの正規表現を使用する Chrome ブラウザーではなく、Safari ブラウザーと一致させる必要があります。私は通常、正規表現に問題はありませんが、ここでは否定的な先読みが私を困惑させています。
これが返される理由がわかりませんtrue
。
java - Java 正規表現: 否定先読み
URI に一致する 2 つの正規表現を作成しようとしています。これらの URI の形式は次のとおりです/foo/someVariableData
。/foo/someVariableData/bar/someOtherVariableData
2 つの正規表現が必要です。それぞれが 1 つに一致する必要がありますが、もう 1 つには一致する必要はありません。
私が最初に思いついた正規表現は
/foo/.+
、/foo/.+/bar/.+
それぞれ次のとおりです。
2番目の正規表現は問題ないと思います。2 番目の文字列にのみ一致します。ただし、最初の正規表現は両方に一致します。それで、私は(初めて)否定的な先読みをいじり始めました。私は正規表現を設計し、/foo/.+(?!bar)
それをテストするために次のコードをセットアップしました
もちろん、どちらも に解決されtrue
ます。
私が間違っていることを知っている人はいますか?必ずしも否定先読みを使用する必要はありません。問題を解決する必要があるだけであり、否定先読みはそれを行う 1 つの方法かもしれないと思います。
ありがとう、