問題タブ [backreference]

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

c# - 正規表現を使用して 2 つの名前付き一致グループの同等性を確認する

私はこの正規表現を持っています:

私が達成したいのは、begintagendtagが等しいかどうかを確認することです。
この入力を検討してください:

これを確認する方法はありますか?

前もって感謝します。

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

c# - 正規表現で最後に繰り返された文字を除くすべてを置き換えるにはどうすればよいですか?

これが、正規表現で実行したい変換の表です。

つまり、文字列が2回以上繰り返される同じ文字である場合、最後の文字を除くすべての文字をZに置き換えたいと思います。

私はここで精神的にブロックされています。これは私がこれまでに思いついたものであり、機能しません。

キャプチャグループの前に後方参照を使用できるかどうかはわかりませんが、どちらにしても、最初の参照をに置き換えても\1効果.はありません。

私はC#を使用しているので、.NETスタイルの正規表現を探しています。もちろん、通常の文字列操作でこれを行うこともできますが、ビジネスケース固有の正規表現を使用する必要があります。

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

sed - sed 's/.../...': 後で使用するために部分式を保存することは可能ですか?

私がそのようなものを持っていると仮定します:

「クレイジーケース」文字列を大文字と小文字が混在する(最初の文字は大文字、残りの文字は小文字)にするためのsedの非常に典型的な使用法

ただし、これは常に文字列全体に影響します。たとえば、さまざまなフレーバー ($tracknr - $artist - $title vs. $artist - $tracknr - $title) で「クレイジーな」mp3 ファイル名を解析したい場合、タイトルが外国語である場合があるため、事態はさらに複雑になります。フランス語や大文字と小文字が混在しているように、フランス語やイタリア語では見た目が醜いだけです。そのため、スペース、ダッシュ、スペースなどの区切り文字に到達するまで処理を続行したいと考えています。

したがって、's/.../...' 式を組み合わせて段階的に処理したいと考えています。ただし、次の sed replace 式のソース式として保存されたサブマッチを使用できるようにするために、前の式から部分式を「保存」する方法があれば便利です。

とにかくOOTBで動作すると思うなら、あなたは間違っています。セミコロンの後の 2 番目の式で '\1' 構文を使用して、前の式の部分式を参照することはできません (もちろん、2 番目の式自体で部分式を定義すると機能しますが、この可能性は今は考慮されていません)。私の場合、パーサーには不明であり、エラーが発生します

そのようなことを実行するために実装されたものはありますか?

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

javascript - javascriptで$1置換後方参照を無視するにはどうすればよいですか

ユーザーがいつでも編集できる文字列と、文字列に対して実行されている正規表現を使用して、それをxmlに追加して保存しますが、文字列に「$ 1」を追加できます。テキスト「$1」を保存したいだけですが、$1 が含まれている同じ文字列に対して正規表現を実行する必要があります。毎回 $1 を正規表現の文字に置き換えます。

この文字列の $1 を見つけて置き換えるにはどうすればよいですか?

何が起こっているかの例:

結果

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

regex - 正規表現の後方参照はどのようにバックトラッキングを必要としますか?

http://swtch.com/~rsc/regexp/regexp1.htmlを読んだところ、著者は、正規表現で後方参照を行うには、照合時にバックトラッキングが必要であり、最悪の場合の複雑さが指数関数的になると述べています。しかし、後方参照によってバックトラッキングが必要になる理由が正確にはわかりません。誰かが理由を説明し、おそらく例 (正規表現と入力) を提供できますか?

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

javascript - JavaScript 正規表現での後方参照

後方参照を取得する方法はありますか?

これは、最初の単語の後にすべての単語を取得する単純な例です。

しかし、警告$1しても何も表示されず、理由がわかりません。助けていただければ幸いです!

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

regex - PowerShell置換で発生する可能性のあるバグですか、それとも間違っていますか?

一部のデータに対して正規表現を実行しています。$_が「置換」セクションにある場合は、コンテンツも取得します。$ replaceでさまざまなことを試しましたが、この動作を止めることができないようです。[regex] :: escape()も試しましたが、エスケープ文字だけで同じことをすることになります。

置換で$_を許容できる必要があります。私はそれを別のものにして後で修正を行うことができますが、それは醜いので、むしろ避けたいと思います。

最後に、$ replace ='$ anythingelse'が期待どおりに機能しているように見える場合、$_のみがこの問題を引き起こしているように見えます。すべての解析を無効にできれば、それも機能します。

スクリプト:

出力:

システム:Windows 7、PSH 2、64ビット

だから私は何か間違ったことをしているのですか、それともこれは本当にバグですか?

6/29編集:

交換できるように交換しました。これはばかげているので、解析を無効にする方法があるはずです(これにより、実行も少し速くなります)。

出力

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

javascript - 正規表現の後方参照、何が欠けていますか?

文字列の一部がオブジェクト オプションに置き換えられるマイクロ テンプレート スクリプトを作成しています。以下に短い例を示します。

JS Fiddleでも

2 番目の式は正常に機能しますが、最初の式は機能しません。誰でも理由を説明できますか?$1文字列内の後方参照として直接使用できると思いました。

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

python - Python正規表現での括弧の奇妙な動作

引用された文字列(ブラックボックスから記録された航空会社のパイロットの引用)のテキストドキュメントを調べるPython正規表現を書いています。私は次のルールで正規表現を書こうとすることから始めました:

引用符の間にあるものを返します。
シングルで開く場合は、シングルで閉じる場合にのみ戻ります。
ダブルで開く場合は、ダブルで閉じる場合にのみ戻ります。

たとえば、「こんにちは」または「こんにちは」ではなく、「こんにちは」と「こんにちは」を一致させたいと思います。

私は次のようなものを含むテストページを使用します:

だから私は簡単に始めることにしました:

この正規表現は非常に予期しない動作をします。
私はそれがするだろうと思った:

  1. ("|")一重引用符または二重引用符のいずれかに一致し、後方参照/1として保存します。
  2. 。*?欲張りでないワイルドカードに一致します。
  3. \1バックリファレンス\1で見つかったものと一致します(ステップ1)。

代わりに、引用符の配列を返しますが、それ以外は返しません。

同等の(afaik)正規表現はVIMで問題なく機能するため、私は本当に混乱しています。

私の質問はこれです:
なぜそれは一致として括弧内にあるものだけを返すのですか?これは、バックリファレンスの理解における欠陥ですか?もしそうなら、なぜそれはVIMで動作するのですか?

そして、Pythonで探している正規表現をどのように書くのですか?

ご協力ありがとうございました!