問題タブ [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 に答える
56 参照

.net - 複数の式を1つに最適化

バックグラウンド

テキスト内の特定の単語を何度も何度も見つけなければならないシナリオがあります。私は現在、このような形式の一連の正規表現を使用しています...

..。

この正規表現オブジェクトのリストは、データのチャンクでループされ、一致が抽出されます(1回のregex.matches(data)呼び出しに対して1回のループ)

事前にコンパイルするなど、最適化するためにできる限りのことをしました。

ただし、リストは長くなり、プロセスを最適化するために、より大きなコンパイル済み正規表現の作成を開始することにしました。そのような...

これにより、速度が大幅に低下しますが、修正方法がわからないという副作用があります。

単語がデータ内に並んでいる場合(スペースで区切られている場合、たとえば「Word1 NextWord AnotherWord」)、「Word1」の正規表現には末尾のスペースも含まれているため、2番目の単語はキャプチャで失われます。「NextWord」で発生する可能性のある一致は、前の一致の一部であるため、先頭のスペースがなくなりました。

質問

誰でもこの正規表現を変更できますか(.net形式)

「.matches(data)」を1回呼び出すだけで、以下のリストにあるすべての単語をキャプチャできます。

?(効率の向上を犠牲にすることなく)

結果

私がこれについて言及しようと思っただけです。提案された回答/修正を先読みと後読みで適用した後、使用方法がわかりました:)、変更したコードの速度が347倍(以前のテスト速度の0.00347%)向上しました。これは、複数の式に入るときに間違いなく覚えておくべきことです。とても幸せです。

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

regex - 正規表現で算術演算はできますか?

整数とその後継者を一致させる方法があるかどうか知りたいです。

一致させたい: 「1 ビクター 2 マルコーニ」

ただし、「1 ビクター 3 マルコーニ」ではありません。

最初の数値を後方参照して次のようにインクリメントする方法はありますか: (\d) [[:alpha:]]* \1 +1 [[:alpha:]]* (INVALID)

正規表現が適切なツールかどうかはわかりません。そうでない場合、それは何ですか?

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

php - PHP preg_match_all 後方参照

次の入力文字列、パターン、および :

print_r の出力は次のとおりです。

Array[2] が Aditya Parikh を与えることがわかるように、Vinton Heuck と Ciro Nieli も受け取ることを望んでいました。しかし、しませんでした。

解決策はありますか??

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

c# - 後方参照を含む正規表現

C# アプリケーションで正規表現を記述して "{value}" を検索し、その前のテキストへの後方参照を "[[" まで、およびその後のテキストへの別の後方参照を "]]" まで作成しようとしています。 . 例えば:

"[[backreference one "、"{value}"、および "\r\nbackreference two]]" に一致します。

次の修正版を試してみましたが、うまくいきませんでした。単語の境界が欠けていると思います。検索しようとしているテキストに「{」が含まれているために問題が発生している可能性があります。

正規表現で可能かどうかはわかりませんが、一致する閉じ括弧を見つけることができれば理想的です。たとえば、次の例では "[[backreferenc[[e]] one ", "{value} "、および "ba[[ckref[[e]]rence t]]wo]]":

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

regex - 後方参照を含む正規表現

だから私はこのように構築された行があるこの非常に長いファイルを持っています:

角かっこの間で少なくとも 9 個の + または - 文字の文字列を検索する必要があり、これらの大かっこの間で一致したものと同じものを、角かっこの横の 2 つの「>」の間に見つける必要があります...これ;

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

java - 非キャプチャ グループへの後方参照を持つことは可能ですか?

replaceAll()ターゲット文字列の直前と直後の文字をキャプチャする正規表現/置換ペアを作成しようとしています。

単純なケースで機能する私のバージョンは次のとおりです。

これは必要に応じて生成"abcd"されます(最後に先読みすると、文字列の最後まで消費され、単一の呼び出しが機能しreplaceAll()ます)。

ただし、ターゲットの後のキャラクターがターゲットの前のキャラクターでもある場合、解決できないように見えるエッジケースがあります。

出品致します"ab"がよろしくお願い致し"abbd"ます。正規表現は一致の先頭部分を消費したため、次の入力は一致しません。

周りを見回してみましたが、うまくいかないようです。


注:ループやコードなどを含むソリューションには興味がありません。言及されたエッジケースで機能する正規表現と置換文字列を探しているだけです。

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

php - パターンへの後方参照のための後方参照の使用

RegExを検討してください。これは、など(\w[0-9]).*\1に一致します。d1akdhfafd1R2ddsfasfasfdsfdR2

次のようにも一致する正規表現を書くことは可能ですか:、、、D1dfsadfadsfE3.... ?z6adfdasfdfr2e3654654e0

\w[0-9]単なる例です。一般的な形式を検討してください(::A_Complex_Pattern::).*\1

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

javascript - JavaScriptで後方参照をインラインで更新するにはどうすればよいですか?

次のコードが与えられます:

期待される出力は次のとおりです。

実際の出力は次のとおりです。

これが私をこの回避策に導きました:

後方参照を更新するために一致を必要とせずにこれを行うにはどうすればよいですか?

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

java - Java-配列内の正規表現の後方参照

正規表現を使用してJava文字列を分割し、後方参照の配列を返す方法はありますか?

簡単な例として、単純な電子メールアドレス(文字のみ)からユーザー名とプロバイダーを取得したいとします。

これは出力する必要があります

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

inheritance - backrefs を使用した SQLAlchemy とポリモーフィック継承

以下に示すように、クラスがNodeあります。正常に動作しますが、定義をクラスLeaf (Node)にシフトしたいと思います。どうすればそれを達成できますか?leafssubleafsLeaf (Node)

私はこれを試しましたが、失敗しました(部分的に):

私の削除テストケースはこれが好きではなく(ツリーのベース/ルートノードを削除してに依存しているだけですcascade='all')、次のように不平を言いました:

定義を変更したい理由は、のNodeすべてのサブクラスの定義で拡張したくないためです。これはLeaf (Node)、後で紹介する可能性があります。さらに、私は間違いなく and を必要とし_xません。しかし、それらを省略すると( & )、次のような問題が発生します。_yLeaf.rootLeaf.baseNode_x =_y =

とinの元の定義では後方参照を使用する必要はありませんでしたが、リレーションを接続するためにinを使用する必要があると思います。どうも。Leaf (Node)leafssubleafsNode