問題タブ [character-class]
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文字クラスを印刷するには?
今朝、コード レビューを行っていて、間違ったコードを見つけましたが、その理由はわかりませんでした。
1
この行はとの間の 16 進文字に評価されると想定されていましたC
が、この行はそうではないと思います。問題は何が一致するかではなく、これが何と一致するかです。文字クラスのすべての文字を印刷できますか? 以下のようなものですか?
ああ、
ruby - 文字クラス内でORを利用したRuby正規表現
正規表現のruby-doc を調べているときに、 && 演算子を実装するための次の例に出くわしました。
という事は承知しています
に等しいだろう
「^」は、正規表現から除外する必要がある記号を表すためです。
しかし、なぜ「z」も含まれていないのだろうか?同等の正規表現が NOT であった理由:
私は正規表現に非常に慣れておらず、ましてや Ruby 内の正規表現の詳細についてはまったく知らないので、どんな助けも大歓迎です!
regex - 「文字クラス内の後方参照」(と同等)の一般的なアプローチは?
Perl 正規表現では\1
、\2
、 などの式は通常、以前にキャプチャされたグループへの「後方参照」として解釈されますが\1
、\2
、 などが文字クラス内に表示される場合はそうではありません。後者の場合、\
はエスケープ文字として扱われます (したがって、\1
単に1
などになります)。
したがって、(たとえば) 最初の文字が最後の文字と一致するが、文字列の他の場所には現れない文字列 (長さが 1 より大きい) に一致させたい場合、次の正規表現は機能しません。
(たとえば)文字列に一致するため、機能しません'a1a2a'
:
通常は回避策1を見つけることができますが、それは常に問題固有のものであり、文字クラス内で後方参照を使用できる場合よりもはるかに複雑に見えます。
一般的な(できれば簡単な) 回避策はありますか?
1たとえば、上記の例の問題については、次のようなものを使用します
...ここで、以前の正規表現のかなり単純な (残念ながら、正しくない) 部分式[^\1]*
を、やや禁止されている否定的な先読み assertionに置き換えました(?!.*\1.+\z)
。\1
このアサーションは基本的に「これ以降 (最後の位置以外) に現れたらあきらめる」というものです。ちなみに、この解決策は、質問で言及した回避策の種類を説明するためだけに提供しています。特に優れているとは言いません。
regex - Cygwin Regex ショートハンド文字クラスが一致しない
私はファイルを持っています
一致すると[0-9]
、期待される結果が得られます
しかし、数字の文字クラスで一致させようとすると、予期しない結果が得られます
これは、うまくいくと思われるものの組み合わせに関係なく続きます。
私が間違っていることと、cygwin sedでCharacter Classedを機能させる方法を知っている人はいますか
アップデート
更新 2
python - Python:文字クラスの正方形のバケツ
Pythonで(文字クラスを使用して)角括弧を一致させようとしています。しかし、次のコードは成功しません。正しい方法を知っている人はいますか?
regex - `HTML::Entities::encode_entities` への `$unsafe_chars` 引数のデフォルトの正規表現文字クラスは何ですか?
HTML::Entities
ドキュメントによると、 の 2 番目の引数encode_entities
:
安全でない文字は、正規表現の文字クラス構文 (正規表現の括弧内にあるもの) を使用して指定されます。
エンコードするデフォルトの文字セットは、制御文字、上位ビット文字、および <、&、>、'、および " 文字です。
ただし、このページには、デフォルト セットの同等の引数の例は示されていません。後退せずに、安全でない文字のセットを微調整したいと思います。
開始点として使用できる «制御文字、上位ビット文字、および <、&、>、'、および "» に相当する正規表現文字クラスはどれですか?
regex - 文字クラスが交互よりも速いのはなぜですか?
次のような例では、文字クラスを使用する方が代替よりも高速であるように思われます:
[abc]
vs(a|b|c)
推奨されていると聞いたことがありTime::HiRes
ます。
また(?:a|b|c)
、キャプチャ括弧が違いを生む場合に使用しても、結果は変わりません。
しかし、私はその理由を理解できません。バックトラックのせいだと思いますが、各位置で見ると3文字の比較があるので、バックトラックが交代にどのように影響するかはわかりません。それは実装の代替の性質の結果ですか?