問題タブ [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 投票する
1 に答える
1981 参照

ruby - gsub のバックスラッシュ (エスケープと後方参照)

次のスニペットを検討してください。

これは出力します ( ideone.com で見られるように):

代わりに次のようなものが表示されることを期待していたので、これは非常に驚くべきことでした。

私の主張は、それはエスケープ文字であるため、リテラルのバックスラッシュを取得する\ために書くため、リテラルのバックスラッシュの後に などが続くということです。\\\\0\0gsub

そして、上記の代替品を入手するにはどうすればよいですか?

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

regex - 正規表現: 文字列リテラル "\1" に置き換える方法は?

と言う文字列がありますr"a"r"a"everyを stringに置き換えたいのですr"\1"が、正規表現エンジンがこれを理解できません。

私が試してみました:

  • r"\1"-- クラッシュします (グループ 1ないため、グループ 1 と一致しません)
  • r"\\1"-- クラッシュします (原因不明)

これは私の (独自の) 正規表現エンジンの制限ですか、それとも一般的な問題ですか? それを解決するエレガントな方法はありますか?(たとえば、"a" を "/1" に置き換えてから StrReplace( "/", r"\" ) を置き換えることもできますが、それは良くありません!)

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

regex - RegExはBackreferenceの値を変更します

後方参照の値を変更する方法はありますか?

例:次のテキスト

「テスト」という単語を抽出し、逆参照を介して別のテキストに挿入する必要があります。

正規表現:

置換:

これまでのところ問題なく動作します。しかし、ここで問題となるのは、挿入する前に後方参照を変更できるかどうかです。「テスト」という単語を大文字に変換するようなものです。

私はそれが次のように見えるかもしれないと思います:

正規表現の「標準」(標準はありますか?)で定義されているものはありますか?

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

php - 空の後方参照により、PHP で一致エラーが発生します...回避策はありますか?

空の可能性のある後方参照を使用する PHP の正規表現に問題があります。http://www.regular-expressions.info/brackets.htmlで説明されているように機能することを望んでいました:

特定の一致試行で後方参照が使用されなかった場合 (疑問符によって最初の後方参照がオプションになった最初の例など)、単純に空になります。正規表現で空の後方参照を使用してもまったく問題ありません。それは単に無に置き換えられます。

ただし、PHP は少し異なるようです... http://php.net/manual/en/regexp.reference.back-references.phpとは異なります。

サブパターンが特定の一致で実際に使用されていない場合、それへの後方参照は常に失敗します。

簡単な例として、次の 2 つのことをこの正規表現と照合します。

  • {何か} ... {/何か}
  • {something:else} ... {/something:else}

「何か」は前もってわかっており、「その他」は何でもかまいません (または何もありません)。

だから私は次の正規表現を試しました(「else」は簡単にするためにハードコードされています):

残念ながら if (:else)? \2 後方参照は失敗します。\2 をオプション (\2?) にすると、{something} ... {something:else} に一致する可能性がありますが、これは良くありません。

正規表現の制限 (悪名高い「正規表現ではなくパーサーが必要」) に遭遇しましたか、それとも修正可能ですか?

テストプログラム:

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

javascript - 後方参照を使用した JavaScript パターンの置換が機能しない

どこでも正常に動作しています

動作していません!!!

何か考えてください???

注意

も正常に動作しています

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

regex - Apachemod_rewriteで名前付き後方参照を使用できますか

全て、

RewriteRulesの1つで興味深い小さな癖に出くわしました。これは、名前付きバック参照を使用して解決したいと考えていました。しかし、私が見ることができることから、これはApacheのmod_rewriteでは不可能です。

2つの着信URLがあり、それぞれにキー変数が含まれています。これらは、同じ基になるフレームワークアクションに書き換える必要があります。

受信URL:

必要な書き換えエンドポイント

/?module = users&action = list&pagenum = 2

私はこのようなことをしたかったでしょう

RewriteRule ^ /(?P <module>([\ w] +))/(?P <action>([\ w] +))/(page-)?(?P <pagenum>([\ d] + ))$ /?module = $ {module}&action = $ {action}&pagenum = $ {pagenum} [L、QSA]

ただし、Apacheはそのようにプレイすることをまったく望んでおらず、名前付きの後方参照の場所にnull値を与えてくれます。問題を回避するために、キャプチャされたグループ($ 1、$ 2、$ 4)への数値参照を使用しました(ただし、N = 9のapache制限のほぼ半分です)。だから、これは私にとってショーストッパーではありません。

名前付き後方参照がApacheのmod_rewriteで使用できるかどうか、また使用できる場合、RewriteRuleのパターンが一致しないのはなぜですか?

ありがとう、イアン

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

mysql - MySQLREGEXPの負の後方参照

MySQLのマニュアルでは、サポートする式についてあまり詳しく説明されていないため、MySQLで次のことが可能かどうかはわかりません。

以下に一致するRLIKEを使用してクエリを作成しようとしています。

タスクは、SQLから、指定された文から少なくとも任意の2つの単語を含むすべての文を取得することです。

たとえば、正規表現で使用する特定の単語がいくつかあります。

データベースに次の文があります。

それらすべてから私は一致したいだけです

今のところ私はこのようにそれを持っています:

問題は-私はそれらも不要になります

したがって、2番目の直前(hello | dog)に後方参照が必要だと思います。

擬似コードでは、次のようになります。

したがって、次のようになります。

このような負の後方参照は、MySQL正規表現で実行できますか?または、同じことを行う正規表現を作成するためのより良い方法があるかもしれませんが、クエリがC ++コードによって生成されることを考慮すると、生成するのに複雑すぎないようにする必要がありますか?

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

php - PHPで検索、インクリメント、および置換するにはどうすればよいですか?

フォームに文字列があり\d+_\d+、2 番目の数値に 1 を追加したいと考えています。私の説明は非常に明確なので、いくつかの例を挙げましょう。

  • 1234567_2 は 1234567_3 になるはずです
  • 1234_10 は 1234_11 になるはずです

これが私の最初の試みです:

これにより、構文エラーが発生します。

解析エラー: 構文エラー、予期しない T_LNUMBER、201 行目の [...] に T_VARIABLE または '$' が必要です

これが私の2回目の試みです

これは $old = 1234567_2 を $new = 1234567_1 に変換しますが、これは望ましい結果ではありません

私の3回目の試み

これは同じ結果になります。

これらの試行を行うことで、新しい $1、$2、$3、.. 変数が実際にどのように機能するかを理解していないことに気付きました。終了時にこれらの変数が存在しなくなっているように見えるため、他に何を試せばよいかわかりません。 preg_replace 関数...

何か案は?

0 投票する
5 に答える
9373 参照

regex - \1 から \9 までの sed 後方参照制限を回避します

sed のマニュアルには、代替の置換文字列に使用できる後方参照には、\1 から \9 までの番号が付けられていることが明確に記載されています。10 個のフィールドを持つログ ファイルを解析しようとしています。

そのための正規表現を作成しましたが、10 番目の一致 (およびそれ以降) にはアクセスできません。

KSH (またはおそらくシェルスクリプトに移植できる言語) でこの制限を回避するエレガントな方法はありますか?

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

regex - 正規表現のネストされた後方参照から内部値をフェッチする方法

サーバーから次の方法で入力を受け取ります(サンプル入力データ)。

入力を一致させ、一致に基づいて、値を持つ変数を作成する必要がありますhostname-eventname

私の正規表現

$2またはのような参照変数で、ホストとイベントの名前を別々にしたいと思います$3

たとえば、次の入力について考えてみます。

<hostname-eventname>上記の一致から取得したホスト名とイベント名に応じた名前の変数を作成する必要があります。

言う、

これ以上分割操作を適用できません。したがって、プログラミングはありません。入力データしか読み取れません。はい、正規表現はPerl正規表現タイプです。

クエリを明確にしたかどうかわかりませんか?