問題タブ [regex-lookarounds]
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 - ネガティブルックアヘッド
2printk
種類の関数呼び出しを考えてみましょう-
%
文字列引数の内部にある上記のような関数呼び出し全体に一致する正規表現を作成していますが、文字列END
も内部にある場合は一致しないはずです。
私はこのようにネガティブ先読みを使用しました
この正規表現は2番目の関数呼び出しにのみ一致すると思いますが、最初の関数呼び出しにも一致します。
私は貪欲な*
部分でどこかで間違っていると思います。
c# - 正規表現:データをキャプチャしながらの後読みのパフォーマンス?
C# の私のプロジェクトでは、日付のテキストを解析しています。日付はさまざまな形式にすることができます。目的は、多数の日付形式エラーを見つけて修正することです。さまざまな日付形式があるということは、一連の定義された日付形式が実現不可能であることを意味します。もともと、入力文字列に 1 つずつ適用される約 10 個の正規表現のセットがありました。これは機能的には問題ありませんでしたが、文字列が 200 KB のテキストに達すると、関数が約 150 ミリ秒かかるため、パフォーマンスが問題になりました。
日付正規表現を日付である部分文字列にのみ適用することで、パフォーマンスを大幅に改善できることがわかりました。したがって、すべての日付に英語の月名が必要な場合は、次の正規表現を使用します
それらを見つけるでしょう。次に、月の周りのテキストを一致させるために部分文字列化を行った場合、全体的な関数のパフォーマンスは約 25 ミリ秒で、はるかに優れていました。ただし、部分文字列/ループの長さチェック コードが乱雑で、本当に良い解決策とは思えません。私が本当に欲しかったのは、月とその周りのテキストに一致する単一の正規表現でした。
機能的には問題ありません。ただし、この正規表現のパフォーマンスは、同じ長い入力文字列で一致を見つけるのに約 3500 ミリ秒かかります。
今、同様の正規表現
肯定的な後読みを使用すると、約15ミリ秒で一致が見つかります(バックトラッキングが非常に減少したため、私が受け入れ、ある程度理解している理由です)。ただし、月名の前後のテキストを一致結果に含める必要があるため、それは私の使用には適していません。
それで、私の質問は、後読みを使用するパフォーマンスを備えた正規表現を持つことができますが、一致結果内のすべてのテキストを提供する機能はありますか?
java - perl と Java の正規表現機能の違いは何ですか?
どの正規表現用語がサポートされているかに関して、perl と Java の違いは何ですか?
この質問は正規表現だけに限定されており、具体的には正規表現の使用方法の違い (つまり、正規表現を使用する関数/メソッド) と、バックスラッシュをエスケープするための Java 要件などの言語間の構文上の違いを除外しています。
特に興味深いのは、Java が可変長の後読みを部分的/時折サポートしていることです。
regex - Perl正規表現一致文字列が何かで終わっていません
これに正しく一致する正規表現を教えてください。
特定のテキスト (_array) で終わらない文字列を識別したい。否定先読みを使用しようとしましたが、機能しません。(明らかな答えは逆 (m{_array$}) を実行することですが、それを実行したくない理由があります)。
私の望む出力は次のとおりです。
regex - 前のテキストが「class='」でない場合の単語の一致
次のコードを見て、クラスではなく ID のみを返す検索用の正規表現を作成しようとしています。
contact
2行目と4行目ではなく、1行目と3行目から戻りたいです。
これは、複数のファイルを検索して、各ファイルを個別に調べて、変更が必要かどうかを確認することを避けるためです。
これは可能ですか?
regex - if-elsif-else-endでの正規表現の使用
例を実行するためにREGEXを使用しようとしていますif-then-elsif-then-else-then-end
:
http://www.regular-expressions.info/conditional.html(?(?=condition)(then1|then2|then3)|(else1|else2|else3))
から見つけましたが、この場合に機能させる方法がわかりません。これが私の正規表現です:if-then-else-then-end
- 文字列が3で終わる場合
- 次にfooを返します
- それ以外の場合はバーを返します
親フェーズのelseで別のif-elseを書くことはできると思いますが、できません:(
regex - 入力内の任意の場所の文字クラスの n と m の間の正規表現先読み
入力内に文字クラスが少なくとも n 個あり、m 個以下であることを主張する正規表現の先読みは何ですか。
簡単で具体的な例を作るために、入力のどこかに5 ~ 8 桁の数字があり、入力が単語の文字とスペース (つまり) で構成されていると主張したいとします[ \w]*
。それで:
{5,8}
私は先を見据えてさまざまな組み合わせを試しました:
しかし、上記の 4 行目の一致 (たとえばregexpal ) として、 の上限8
は適用されません。
javascript - 複数の要素を先読みする正規表現
それらの文字が先読みアサーションのすぐ後に続かない場合、1 つ以上の文字が存在する/存在しないかどうかを確認するために先読みを使用することは可能ですか?
たとえば
、次のような正規表現が与えられた場合:
たとえば、最初のグループに 'a' があった場合、3 番目のグループの 'i' のみを一致として許可することはできますか?
regex - 他の2つの単語の間に3文字以上の単語を見つける方法
私には2つの文があります:
正規表現の助けを借りて:
- 人間なしで犬と猫が一緒にいる文章を見つけたい
- また、文中に人間が見つからない犬と猫の間に 3 文字以上の単語が必要です