問題タブ [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.
parsing - LR 解析アルゴリズムでの否定先読み
LR ファミリーの構文解析ジェネレーター (YACC、BISON など) の文法規則を考えてみましょう。
制限があることを除いて、これは通常のルールです。このルールで作成されたフレーズは、で始まることはできませんTerminal1, ..., TerminalN
。(確かに、この規則は一連の通常の規則に置き換えることができますが、より大きな文法になります)。これは、競合を解決するのに役立ちます。
問題は、そのような制限を受け入れる LR テーブル構築アルゴリズムの修正があるかどうかです。そのような変更が可能であるように私には思えます(優先関係のように)。
確かに、実行時にチェックできますが、コンパイル時のチェックを意味します ( yacc 互換ジェネレーターの%prec
、%left
、%right
およびディレクティブなどの解析テーブルの作成中に実行されるチェック)。%nonassoc
java - パターンで始まりパターンで終わらない文字列を照合するための正規表現
URLを指定すると、URLが特定のドメインで始まり、特定のパターンで終わらないことを一致させる必要があります。
たとえば、 URL のリストが与えられた場合、 orで始まり、 and で終わらない
URL に一致させたいとします。"http://www.google.com/"
"http://www.facebook.com/"
".jpg"
".bmp"
".png"
私は何かを試しました
しかし、うまくいかないようです..間違いはありますか?または別の方法はありますか?
php - preg_replace file_get_contents 内の単語を含まないすべてのリンク
ページを変数に読み込んでいますが、アドレスに「remedy」という単語が含まれていないすべてのリンクを無効にしたいと考えています。私がこれまでに持っているコードは、「救済」のあるものを含むすべてのリンクを取得します。私は何を間違っていますか?
- 解決 -
.net - ^ 正規表現で問題を引き起こす
部分文字列を正規表現と一致させようとしていますが、予想外に ^ がロジックを変更します。正規表現...
で始まる文を拒否しMy Words
ます。この場合、否定先読みは単語全体をチェックします。ただし、ドロップする^
と
y Words lskjdf
正規表現は、 を含む文で を返すだけMy Words lskjdf
です。この場合、否定先読みが全体として処理されないのはなぜですか? M
一致するものだけを選択するのはなぜですか? ^
とはどのように(?1
連携していますか?
python - 正規表現: 文字列をパターンに一致させます (存在しない可能性があります)
Python で正規表現トークナイザーを使用して XML ドキュメントを解析しようとしています (これは有限集合なので、正規表現で十分です!)。コメントを適切に一致させるのに問題があります。
これらのコメントの形式<!--This is a comment-->
は、コメント自体に英数字以外のあらゆる種類の文字 (「-」を含む) を含めることができる形式です。
コメントを次のトークンに分割するような方法でそれらを一致させたい:
<!--
This is a comment
-->
開始マーカーは簡単に取得でき、別の正規表現でそれを取得することに成功しましたが、コメントの正規表現自体が貪欲になりすぎて--
、終了マーカーから取得しています。<Tag>This is text</Tag>
ただし、この正規表現は、必ずしもコメントで囲まれているとは限らない文字列も取得する必要があるため、取得して正しく返すこともできるはずThis is text
です。
これは、現在テキストに使用している正規表現です。
[^<>]+(?!-->)
他のThis is a comment--
正規This is a comment
表現が-->
. ただし、この正規表現は通常のタグでは機能しますが、終了タグに「<」が存在するためThis is text
、前の例から適切に返されます。
否定先読みを適切に使用してはならないことはわかっています。ここで私が間違っていることについてのアイデアはありますか? を試しまし[^<>]+(?=-->)
たが、この形式のコメントではないもの (通常のタグなど) には一致しません。はそのパターンを見たときにマッチングを停止するだろうと考えましたが、その(?!-->)
ようには機能しないようで、末尾の '>' が表示されるまでマッチングを続けます。
コンテキストのコードのセグメントを投稿する:
これは、現時点でスクリプトが行っている唯一のことです。
regex - .htaccess 否定された先読み正規表現の形式が正しくありません
以下は、私の .htaccess ファイルの一部です。Apache から次の動作が必要です (現在、サイトは localhost にありますが、それは問題ではありませんよね?):
要求されたリソースがそれ以外の場合
また
お気に入り
提供されるリソースは
それ以外の場合、提供される URL は {site_url}/core または {site_url}/login、つまり要求されたものである必要があります。
.htaccess ファイルは次のとおりです。
しかし、これは機能していないようで、エラーが返されます。私は正規表現にあまり詳しくなく、これらを学ぼうとしています。したがって、この表現から私が推測したことは次のとおりです。
'/' の後の式、つまり、site_url の後の URI が core または login (?!core|login)) と一致せず、その後にサブフォルダーを含む何かが続く場合 (/?.*)$ オプションのスラッシュ、およびエイリアスを /site/ (2 番目の括弧で一致したもの) に設定します。
モジュールは機能しています。ヘッダーの追加部分のみを使用して確認しましたが、問題は正規表現です。
助けてください。