問題タブ [regexp-grammars]
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のRegexp::Grammarsを使用してバランスの取れた引用を行うにはどうすればよいですか?
DamianConwayのRegexp::Grammarsを使用して、括弧、引用符、二重引用符、二重ドルなど、さまざまなバランスの取れた引用符(、、ではなく)メカニズム'foo'
を"foo"
一致させようとしています。'foo"
これは私が現在使用しているコードです。
これは一般的に正常に機能し、次のように言うことができます。
pair
私の質問は、トークンの針表記を除外するために、出力をどのように再構成するかです。
pair
ここでは、明らかに、その間に、引用し、そのliteral
価値を持たせたいという欲求はありません。'foo'
、、、"foo"
およびを一致させるためのより良い方法はありますか?また、不必要なトークンを毎回作成せず$$foo$$
に、場合によっては一致させる方法はありますか?そのトークンを前処理したり、上記に折りたたんだりできますか?または、それの必要性を完全に排除するより良い構造を書きますか?( foo )
pair
perl - perlのRegexp::Grammarsを使用して、キャプチャを$ MATCHに依存させるにはどうすればよいですか?
私はそのようなトークンを持っています:
そして、私がしたいのは、delim2
キャプチャしての値に設定することですdelim
。これを実行すると、delim2
が設定されますが、キャプチャは実行されません。これは私の推論の誤りだと思います:私はこのフォームを連鎖させようとしています:
そしてこの形:この(?{ MATCH{delim} })
ようなものに
しかし、これは単に有効ではないようです。元のトークン<delim2=((?{ die $MATCH{delim} }))>
がその値で機能することを確認できます。ハードコーディングすると、適切なキャプチャが取得され、すべてが機能し<delim2=(')>
ますか?では、動的なパターンを持ちながら、どのようにして適切な結果を達成するのでしょうか。
context-free-grammar - 冗長な括弧のない算術式の曖昧さのない文法
冗長な括弧のない算術式の曖昧さのない文法を探しています。たとえば、括弧はで冗長ですがid+(id*id)
、では冗長ではありません(id+id)*id
。
perl - 一致する順序を %/ に保存するには?
次のルールを検討してください
出力 ( %/
) は、次の入力に対して同じになります
これは、'token1' という名前のリスト内の最初のトークンに 2 番目のトークンが追加されるためですが、他のトークンとの一致順序に関するヒントはありません。
一致する注文をに保存する方法はあり%/
ますか?
ps この %/ 魔法の変数を使用してスクリプトをコンパイルする際に問題があります。の使用に続く行で常にエラーが発生します%/
。コンパイラは、/ を終了せずに正規表現の始まりと見なしていると思います...正しく使用しているかどうかを教えてください。
regex - キャレットが1つしかない文字クラスは何をしますか?
Write text into new line when a specific character is foundという質問に答えようとして、私はRegexp::Grammarsを採用しました。長い間興味を持っていましたが、ついに学ぶ理由ができました。著者の説明セクションに LaTeX パーサーがあることに気付きました (私は熱心な LaTeX ユーザーなので、これに興味を持ちました) が、ここに見られる奇妙な構造が 1 つあります。
[^]
文字クラスは何を達成しますか?
perl - ドキュメントからテーブルを抽出するには、Parse::RecDescentまたはRegexp::Grammarsを使用する必要がありますか?
perlで解析したい大きなプレーンテキストドキュメントがたくさんあります。各ドキュメントには、ほとんどが英語の段落が含まれており、各ドキュメントにはいくつかのプレーンテキストが表に記されています。
テーブル構造を説明する文法を作成しましたが、Parse::RecDescentまたはRegexp::Grammarsを使用してテーブルを抽出するのが最適かどうかわかりません。
最初はParse::RecDescentに傾倒しましたが、それぞれの中に埋め込まれた抽出したいいくつかのテーブルを見つけるために、無視したいドキュメントテキストの90%をどのように処理するかが文法でわかりません。資料。
おそらく、一致するものが見つかるまでドキュメント全体で表現を「プル」できるように、Regexp :: Grammarsが必要ですか?
ありがとう
regex - Regexp :: Grammarsを使用して複数行のパターンを一致させるにはどうすればよいですか?
私はRegexp::Grammarsを初めて使用し、複数行のパターンを一致させるのに問題があります。私はこの入力を持っています:
そしてこの文法:
セクションの最初の行だけを一致させていますが、空白行または入力の終わりまでのすべてのテキストをキャプチャしたいと思います。誰かが私が間違っていることを見ることができますか?
.net - perl の Regexp::Grammars やラベル付きサブパターンのようなものは .NET にありますか?
私は、perl のRegexp::Grammarsモジュールがとても気に入っています。.NET にこのようなものはありますか?
C# で正規表現スタイルの方法 (たとえば、大きなドキュメントから一致するパターンを検索する) で再帰降下パーサーを使用し、そのパターンを再帰的に表現できるようにしたいと考えています。
更新brian d foy からのこの小さな宝石を読んだ後、perl 5.10 が (?&NAME) を使用したラベル付きサブパターンをサポートしていることを発見しました。PCREにはNuget パッケージが含まれるようになり、PCRE は名前付き/ラベル付きのサブパターンをサポートします。
regex - Regexp::Grammars をロードした後に「通常の」正規表現を使用する
アプリケーションでRegexp::Grammarsを使用しようとしていますが、他の多くの正規表現が機能しなくなります。たとえば、次のコード:
私の問題を示しています。モジュールを繰り返しロードおよびアンロードする以外に、これに対処する方法がわかりません。モジュールを明示的にアンロードした後に拡張正規表現を使用できるかどうかさえわかりませんno
. Regexp::Grammars の力を利用しながら、通常の正規表現を許可するにはどうすればよいですか?