問題タブ [negative-lookahead]

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 投票する
3 に答える
721 参照

regex - Perlの*修飾子を使用した負の先読みアサーション

テストされた文字列の後に任意の数のスペース(ゼロを含む)が続き、その後に。が続かない場合に一致すると予想される(私が信じている)否定的な先読みアサーション があります。<@> *(?!QQQ)<@>QQQ

ただし、テストされた文字列が<@> QQQ正規表現である場合は一致します。

なぜそうなるのかわからないので、この件について助けていただければ幸いです。

これがテストスクリプトです

このプリント

そして、私は最初の行がになると思っていましたsomething <@> QQQ --> something at w/ QQQ

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

regex - 正規表現は、2 つの名前と特定の単語の後に

First Last <email@domain.com>これらの集約された電子メール内に多数の名前と電子メール アドレスがあり、ドキュメント全体以外のすべてを削除したいと考えています。基本的に私は...

私はちょうど一致したい...

このテキストから。"From: "したがって、基本的には、単語plusの後の次の 2 つの単語に一致させたいと考えて"<"+email address+">"います"From: "。これは否定的な先読み (私が思うに) であり、2 つの単語 (何らかの方法で を使用) を検索してから、ある文字から別の文字へ{0,2}のメール アドレスを検索することを研究から収集しました。<>

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

regex - 正規表現: thank/ で終わる文字列以外の任意の文字列に一致します。

Google アナリティクスで目標到達プロセスを設定しようとしています。これは、追跡したいオンライン見積依頼システム用です。基本的に、見積もり依頼フォームを含むすべてのページには、動的に生成された類似の一意の URL があります。URL の形式は次のとおりです。

/quoterequest/categoryone/categorytwo/製品名/

私はそれを追跡するために機能する正規表現を持っています:

本日、ユーザーがフォームを送信した後にサンキュー ページを追加しました。そのための URL は常に同じです。

/引用リクエスト/ありがとう/

上記の正規表現を変更して、引用リクエスト URL のいずれかと引き続き一致するようにしたいと思いますが、サンキュー URL とは一致しません。t を含むさまざまなバリエーションを試しています。彼は否定的な見方をしていますが、残念ながら私は正規表現の経験があまりなく、完全に間違っていたと思います。これを行う正しい方法について誰かが私に洞察を与えることができますか?

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

regex - htaccess ルール - URL に特定の文字列が含まれていない場合の照合方法

次の URL 構造を持つページがいくつかあります。

/詳細/id/125/

何らかの理由で、Google は /details/125/ のように /id/ の部分が欠落しているページをインデックスに登録しました。これにより、重複コンテンツの問題が発生しています。

そのため、URL に /details/ が含まれているが /id/ が含まれていない場合、404 ページにリダイレクトするように .htaccess RedirectMatch ルールが必要です。

私がこれまでに試したことはありません。

RedirectMatch 404 ^/詳細/(?!id)/

私の調査では、この情報http://www.mycomputingart.com/programming/Z24.regexpadv.htmlを見つけました。これは、私が行う必要があることに関連していると思われますが、理解に苦しんでいます。

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

python - Python regex 、2 つの否定先読みステートメント

構文解析されたテキストの文字列があります。

「同じ」を s に一致させたいと思います。「the」と「same」は、構文マークアップ ((、NP、S など) で区切られた場合にのみ一致することが重要です。したがって、「同じ」は s2 で一致を見つけるべきではありません。

私は無駄に二重否定先読みアサーションを試みました:

小文字が続かない場合は「the」に一致し、小文字が続かない場合は「same」に一致するという考え方です。

誰もがより良いアプローチを持っていますか?

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

xslt - 子の値に基づいてテーブルを作成する

こんにちは私は次の入力のサンプルに基づいてテーブルを返そうとしています:

次に、私のXSLT:

必要な出力:

私が抱えている問題は、テーブルが空になった場合にテーブルが作成されるのを防ぐことができず、テーブルに正当な行が含まれているかどうかを判断するまでに、テーブル名を追加するには遅すぎるということです。

0 投票する
4 に答える
1704 参照

regex - 文字を囲む正確に3つの大文字の正規表現の否定先読み

正規表現を書き込もうとすると 、両側にちょうど3つの大文字を持つすべての文字が見つかります

次の正規表現は、文字の左側に大文字が 3 つ、右側に3 つ(またはそれ以上)あるすべての文字を検索します。

正規表現を使用して右側を 3 つ以下の大文字に制限しようとする場合:

結果が得られません。最初の正規表現に (?![AZ]) を追加すると失敗するようです。

誰かが私に問題を説明し、それを解決する方法を提案できますか?

ありがとう。

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

regex - 正規表現-否定的な先読み

Perlの負の先読み正規表現を使用して、ターゲットの文字列から特定の文字列を除外しようとしています。アドバイスをお願いします。

-sm、-sp、または-saを含まない文字列を取得しようとしました。

正規表現:

入力

期待される出力:

ただし、この実際の出力は次のとおりです。

私を助けてください。

ps: 結果を視覚化するために正規表現コーチを使用しました。

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

python - Python 正規表現: BackReference

Python 2.5 コードは次のとおりです (単語foxを link<a href="/fox">fox</a>に置き換え、リンク内での置き換えを回避しました)。

出力は次のとおりです。

  1. 後方参照が機能しない理由がわかりません\3

  2. (?!((<.*?)|(<a.*?)))(fox)(?!(([^<>]*?)>)|([^>]*?</a>))http://regexr.com?317bnを参照してください。これは驚くべきことです。最初の否定的な先読みは(?!((<.*?)|(<a.*?)))私を困惑させます。私の意見では、それは機能しないはずです。最初に見つかった一致を取得します。 にfoxgave chase to the fox.</p><a href='http://en.wikipedia.org/wiki/Dog'>dog</a>where と一致する場所があり((<.*?)|(<a.*?))、否定先読みとして FALSE を返す必要があります。私は自分自身を明確に表現しているかどうか確信が持てません。

どうもありがとう!

(注: BeautifulSoup を使うのは嫌いです。独自の正規表現を書くのが好きです。ここにいる多くの人が、正規表現は HTML 処理用ではないと言うでしょうが、これは小さなプログラムなので、BeautifulSoup よりも正規表現を好みます)

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

java - Java 正規表現: 否定先読み

URI に一致する 2 つの正規表現を作成しようとしています。これらの URI の形式は次のとおりです/foo/someVariableData/foo/someVariableData/bar/someOtherVariableData

2 つの正規表現が必要です。それぞれが 1 つに一致する必要がありますが、もう 1 つには一致する必要はありません。

私が最初に思いついた正規表現は /foo/.+/foo/.+/bar/.+それぞれ次のとおりです。

2番目の正規表現は問題ないと思います。2 番目の文字列にのみ一致します。ただし、最初の正規表現は両方に一致します。それで、私は(初めて)否定的な先読みをいじり始めました。私は正規表現を設計し、/foo/.+(?!bar)それをテストするために次のコードをセットアップしました

もちろん、どちらも に解決されtrueます。

私が間違っていることを知っている人はいますか?必ずしも否定先読みを使用する必要はありません。問題を解決する必要があるだけであり、否定先読みはそれを行う 1 つの方法かもしれないと思います。

ありがとう、