上級
STAGE 1
110問目 • 10
  • Q1

    正規表現エンジンのバックトラッキングが原因で発生する問題は何ですか?

    ANSWER
    カタストロフィック・バックトラッキング(ReDoS)
    クリックして解説を表示
    EXPLANATION

    悪意のある入力や複雑なパターンにより、バックトラッキングが指数関数的に増加し、処理時間が非常に長くなることがあります。これをカタストロフィック・バックトラッキング(ReDoS攻撃の原因)と呼びます。

  • Q2

    正規表現(a+)+$が「aaaaaaaaaaaaaaaaab」に対して非常に遅くなる理由は何ですか?

    ANSWER
    ネストした量指定子による指数関数的バックトラック
    クリックして解説を表示
    EXPLANATION

    ネストした量指定子(a+)+は、マッチに失敗した場合に大量のバックトラックを引き起こします。「b」でマッチ失敗後、「a」の分割方法をすべて試すため、指数関数的な時間がかかります。

  • Q3

    ReDoS(Regular Expression Denial of Service)を防ぐ最も効果的な方法はどれですか?

    ANSWER
    アトミックグループ/所有量指定子の使用とタイムアウト設定
    クリックして解説を表示
    EXPLANATION

    アトミックグループ(?>...)や所有量指定子++を使用すると、バックトラックを防止できます。また、ネストした量指定子を避け、タイムアウトを設定することも重要です。

  • Q4

    所有量指定子(possessive quantifier)a++の特徴は何ですか?

    ANSWER
    貪欲マッチを行い、バックトラックしない
    クリックして解説を表示
    EXPLANATION

    所有量指定子++は貪欲マッチを行いますが、一度マッチした文字を手放しません(バックトラックしない)。パフォーマンス向上に役立ちますが、マッチ結果が変わる場合があります。

  • Q5

    正規表現a++(?>a+)は機能的に同等ですか?

    ANSWER
    同等である
    クリックして解説を表示
    EXPLANATION

    はい、a++(所有量指定子)と(?>a+)(アトミックグループ)は同等の機能を持ちます。どちらもバックトラックを防止します。

  • Q6

    RFC 5322に準拠したメールアドレス検証の正規表現で考慮すべき点として不適切なものはどれですか?

    ANSWER
    100%の精度を正規表現だけで達成できる
    クリックして解説を表示
    EXPLANATION

    RFCに完全準拠した正規表現は非常に複雑になります。実用的には、基本的な検証の後に実際のメール送信で確認するのがベストプラクティスです。Unicode文字もローカルパートで使用可能です。

  • Q7

    URLを検証する正規表現で一般的に見落とされがちな要素はどれですか?

    ANSWER
    国際化ドメイン名(IDN/Punycode)
    クリックして解説を表示
    EXPLANATION

    URL検証では、国際化ドメイン名(IDN/Punycode)、ポート番号、ユーザー情報(user:pass@)、フラグメント識別子、クエリ文字列など、多くの要素を考慮する必要があります。

  • Q8

    日本の電話番号(固定・携帯)を検証する場合、考慮すべき形式として正しくないものはどれですか?

    ANSWER
    +1-123-456-7890
    クリックして解説を表示
    EXPLANATION

    日本の電話番号は市外局番の桁数が地域によって異なり(2〜5桁)、形式も多様です。050(IP電話)、070/080/090(携帯)、0120(フリーダイヤル)などがあります。「+1」はアメリカの国番号です。

  • Q9

    正規表現エンジンの種類として、NFAとDFAの主な違いは何ですか?

    ANSWER
    NFAはバックトラック可能で機能豊富、DFAは線形時間だが機能限定
    クリックして解説を表示
    EXPLANATION

    NFA(非決定性有限オートマトン)はバックトラックをサポートし、後方参照などの機能が使えますが、最悪ケースで遅くなります。DFA(決定性有限オートマトン)は常に線形時間ですが、機能が限定されます。

  • Q10

    JavaScriptの正規表現でサポートされていない機能はどれですか?(ES2018以前)

    ANSWER
    後読み(lookbehind)
    クリックして解説を表示
    EXPLANATION

    ES2018以前のJavaScriptでは、後読み(lookbehind)、名前付きキャプチャグループ、Unicodeプロパティエスケープはサポートされていませんでした。ES2018以降で追加されました。

STAGE 2
1120問目 • 10
  • Q11

    Pythonのre.VERBOSE(またはre.X)フラグの用途は何ですか?

    ANSWER
    空白とコメントを許可して可読性を向上
    クリックして解説を表示
    EXPLANATION

    re.VERBOSEは拡張モードを有効にし、パターン内の空白とコメント(#以降)を無視します。複雑な正規表現を読みやすく記述できます。

  • Q12

    Pythonでre.compile()を使用する主なメリットは何ですか?

    ANSWER
    同じパターンの再利用時にパフォーマンスが向上
    クリックして解説を表示
    EXPLANATION

    re.compile()は正規表現をコンパイルしてオブジェクトを作成します。同じパターンを複数回使用する場合、毎回コンパイルするオーバーヘッドを避けられます。

  • Q13

    JavaScriptの/uフラグ(Unicode)を使用すると何が変わりますか?

    ANSWER
    サロゲートペアを正しく扱い、Unicodeプロパティが使用可能
    クリックして解説を表示
    EXPLANATION

    /uフラグはUnicodeモードを有効にします。サロゲートペアを正しく扱い、\u{...}構文や\p{...}プロパティエスケープが使えるようになります。

  • Q14

    JavaScriptの/yフラグ(sticky)の動作は何ですか?

    ANSWER
    lastIndexの位置からのみマッチを試みる
    クリックして解説を表示
    EXPLANATION

    /yフラグはlastIndexの位置からのみマッチを試みます。グローバル検索とは異なり、その位置でマッチしなければ失敗します。

  • Q15

    Perlの正規表現で/e修飾子は何をしますか?

    ANSWER
    置換パターンをコードとして評価する
    クリックして解説を表示
    EXPLANATION

    Perlの/e修飾子は置換パターンをPerlコードとして評価します。これにより、マッチした文字列に対して動的な変換を行えます。

  • Q16

    Ruby、Perl、PHPで使われるPCRE(Perl Compatible Regular Expressions)の特徴は何ですか?

    ANSWER
    高度な機能(再帰、条件分岐など)をサポート
    クリックして解説を表示
    EXPLANATION

    PCREはPerl互換の正規表現ライブラリで、多くの言語で使用されています。名前付きキャプチャ、再帰パターン、条件分岐など高度な機能をサポートします。

  • Q17

    正規表現で再帰パターン(?R)または(?0)の用途は何ですか?

    ANSWER
    ネストした構造(括弧など)をマッチさせる
    クリックして解説を表示
    EXPLANATION

    再帰パターンはパターン全体を再帰的にマッチさせます。括弧のネスト((()))やHTML/XMLの入れ子構造などをマッチさせるのに使用します。

  • Q18

    正規表現\((?:[^()]|(?R))*\)は何にマッチしますか?

    ANSWER
    正しくネストした括弧
    クリックして解説を表示
    EXPLANATION

    このパターンは再帰を使用して、正しくネストした括弧にマッチします。((a)(b(c)))のような複雑なネストにもマッチします。

  • Q19

    正規表現(?1)は何を表しますか?

    ANSWER
    1番目のグループのパターンの再帰呼び出し
    クリックして解説を表示
    EXPLANATION

    (?1)は1番目のキャプチャグループのパターンを再帰的に呼び出します。(?R)がパターン全体を呼び出すのに対し、特定のグループのみを呼び出します。

  • Q20

    クレジットカード番号の基本的な検証(形式のみ)で使用される正規表現パターンの特徴は?

    ANSWER
    ブランドごとに先頭の数字と桁数が異なる
    クリックして解説を表示
    EXPLANATION

    クレジットカード番号は通常13〜19桁の数字で、ブランドごとに先頭の数字が異なります(Visa: 4、MasterCard: 51-55または2221-2720など)。ただし、正規表現は形式チェックのみで、Luhnアルゴリズムによる検証も必要です。

STAGE 3
2130問目 • 10
  • Q21

    IPv4アドレスを厳密に検証する正規表現で、25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\dというパターンが使われる理由は?

    ANSWER
    0-255の範囲を正確に検証するため
    クリックして解説を表示
    EXPLANATION

    各オクテットは0-255の範囲である必要があります。このパターンは250-255、200-249、100-199、0-99の各範囲を正確にマッチさせ、256以上の数値を拒否します。

  • Q22

    正規表現でIPv6アドレスを検証する際の主な課題は何ですか?

    ANSWER
    省略形、混合表記など多様な形式が存在する
    クリックして解説を表示
    EXPLANATION

    IPv6は省略形(::による連続ゼロの省略)、混合表記(IPv4互換)、ゾーンID(%付き)など多様な形式があり、すべてをカバーする正規表現は非常に複雑になります。

  • Q23

    正規表現^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$は何を検証していますか?

    ANSWER
    IPv4アドレス(厳密な検証)
    クリックして解説を表示
    EXPLANATION

    このパターンはIPv4アドレスの厳密な検証を行います。各オクテットが0-255の範囲で、ドットで区切られた4つの数値であることを確認します。

  • Q24

    正規表現でHTMLをパースすることが推奨されない主な理由は何ですか?

    ANSWER
    HTMLは正規言語ではなく、正規表現では完全にパースできない
    クリックして解説を表示
    EXPLANATION

    HTMLは文脈自由文法で、ネストした構造、属性の順序、コメント、CDATA、エンティティなど複雑な要素があります。正規表現(正規文法)では完全にパースできず、専用のパーサーを使用すべきです。

  • Q25

    正規表現で日付の妥当性(2月30日など)を検証することは?

    ANSWER
    非常に困難で、日付ライブラリを使用すべき
    クリックして解説を表示
    EXPLANATION

    正規表現では形式のみを検証でき、日付の妥当性(月ごとの日数、うるう年など)を完全に検証することは非常に困難です。プログラミング言語の日付ライブラリを使用すべきです。

  • Q26

    正規表現のユニットテストを書く際のベストプラクティスはどれですか?

    ANSWER
    マッチ/非マッチの両方とエッジケースをテストする
    クリックして解説を表示
    EXPLANATION

    正規表現のテストでは、マッチすべきケース(正常系)、マッチしないべきケース(異常系)、エッジケース(空文字、境界値、特殊文字)をカバーすることが重要です。

  • Q27

    正規表現(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}で検証しているのは何ですか?

    ANSWER
    強力なパスワード(複数の文字種を含む8文字以上)
    クリックして解説を表示
    EXPLANATION

    このパターンは複数の先読みを使用して、大文字・小文字・数字・特殊文字を各1文字以上含む8文字以上の文字列にマッチします。強力なパスワードの検証に使用されます。

  • Q28

    正規表現のパフォーマンス最適化として不適切なのはどれですか?

    ANSWER
    ネストした量指定子を使用する
    クリックして解説を表示
    EXPLANATION

    ネストした量指定子(a+)+はカタストロフィック・バックトラッキングの原因になります。アンカーの使用、非キャプチャグループ、具体的な文字クラスの使用はパフォーマンス向上に有効です。

  • Q29

    .*よりも[^x]*を使用する方がパフォーマンスが良い場合があるのはなぜですか?

    ANSWER
    バックトラックが減少するから
    クリックして解説を表示
    EXPLANATION

    [^x]*は「x」以外の文字にマッチするため、「x」に到達したらそこで停止します。.*は最後まで進んでからバックトラックするため、不要なバックトラックが発生する可能性があります。

  • Q30

    Unicodeの結合文字(combining character)を扱う際の正規表現の注意点は?

    ANSWER
    結合文字は基底文字と別にマッチされる可能性がある
    クリックして解説を表示
    EXPLANATION

    結合文字(アクセント記号など)は基底文字と組み合わせて1つの「見た目の文字」を形成します。.は結合文字を別の文字として扱うため、\X(グラフェムクラスタ)を使用する必要がある場合があります。

STAGE 4
3140問目 • 10
  • Q31

    正規表現\p{Script=Hiragana}は何にマッチしますか?

    ANSWER
    ひらがな
    クリックして解説を表示
    EXPLANATION

    \p{Script=Hiragana}はUnicodeスクリプトプロパティを使用して、ひらがな文字にマッチします。言語やスクリプトを指定した文字マッチが可能です。

  • Q32

    正規表現で絵文字を正しくマッチさせる際の課題は何ですか?

    ANSWER
    複数コードポイントで構成される絵文字がある
    クリックして解説を表示
    EXPLANATION

    絵文字は複数のコードポイントで構成されることがあり(ZWJ結合、スキントーン、国旗など)、単純な.では正しくマッチできません。Unicodeプロパティやグラフェムクラスタを使用する必要があります。

  • Q33

    正規表現\p{Emoji}は何にマッチしますか?

    ANSWER
    Emojiプロパティを持つ文字
    クリックして解説を表示
    EXPLANATION

    \p{Emoji}はUnicodeのEmoji プロパティを持つ文字にマッチします。ただし、これには絵文字として使用できる数字なども含まれるため、\p{Emoji_Presentation}などより具体的なプロパティを使用することもあります。

  • Q34

    Javaで正規表現を使用する際、Pattern.UNICODE_CHARACTER_CLASSフラグの効果は?

    ANSWER
    \w、\dなどがUnicode定義に従う
    クリックして解説を表示
    EXPLANATION

    このフラグを有効にすると、\w\d\sなどのショートハンドがUnicode定義に従うようになります。デフォルトではASCIIのみにマッチします。

  • Q35

    .NETの正規表現で(?<name-other>)構文の用途は何ですか?

    ANSWER
    バランシンググループ(ネストの追跡)
    クリックして解説を表示
    EXPLANATION

    .NETの「バランシンググループ」は、開き括弧と閉じ括弧のペアを追跡できます。(?<name-other>)はotherグループからnameグループへポップ操作を行い、ネストの深さを追跡します。

  • Q36

    正規表現でコメントを含むコードから文字列リテラルを正確に抽出する際の課題は?

    ANSWER
    コメント内の引用符やエスケープの処理が複雑
    クリックして解説を表示
    EXPLANATION

    コメント内の引用符、エスケープされた引用符、複数行文字列、ネストしたコメントなど、文脈に依存する要素が多く、正規表現だけでは正確な抽出が困難です。

  • Q37

    正規表現"(?:[^"\\]|\\.)*"は何にマッチしますか?

    ANSWER
    エスケープを考慮したダブルクォート文字列
    クリックして解説を表示
    EXPLANATION

    このパターンはダブルクォートで囲まれた文字列にマッチします。[^"\\]は引用符とバックスラッシュ以外、\\.はエスケープシーケンスにマッチし、"hello\"world"のような文字列を正しく処理します。

  • Q38

    正規表現を使用したXSS(クロスサイトスクリプティング)対策で注意すべき点は?

    ANSWER
    ブラックリスト方式は不完全で、回避手法が多数存在
    クリックして解説を表示
    EXPLANATION

    正規表現によるブラックリスト方式のXSS対策は不完全です。攻撃者はエンコーディング、大文字小文字の混在、改行挿入などで回避できます。ホワイトリスト方式やHTMLエスケープを使用すべきです。

  • Q39

    正規表現でSQLインジェクションを検出しようとする際の問題点は?

    ANSWER
    攻撃パターンが多様で、正規表現での検出は不完全
    クリックして解説を表示
    EXPLANATION

    SQLインジェクションの攻撃パターンは非常に多様で、コメント、エンコーディング、DBMS固有の構文などを利用した回避手法があります。正規表現ではなく、プリペアドステートメントを使用すべきです。

  • Q40

    正規表現(?:(?:(?P<protocol>https?|ftp):\/\/)?(?P<host>[\w.-]+)(?::(?P<port>\d+))?(?P<path>\/[^\s]*)?) で抽出できる情報は?

    ANSWER
    プロトコル、ホスト、ポート、パスを個別に抽出
    クリックして解説を表示
    EXPLANATION

    このパターンは名前付きキャプチャグループを使用して、URLからプロトコル、ホスト、ポート、パスを個別に抽出します。各要素がオプショナルになっています。

STAGE 5
4150問目 • 10
  • Q41

    正規表現でログファイルをパースする際のベストプラクティスは?

    ANSWER
    名前付きキャプチャ、拡張モード、エラーハンドリングを使用
    クリックして解説を表示
    EXPLANATION

    ログパースでは名前付きキャプチャグループで各フィールドを抽出し、拡張モードで可読性を高め、想定外の入力に対するエラーハンドリングを行うことが重要です。

  • Q42

    Apacheログの一般的な形式(Combined Log Format)をパースする正規表現で必要な要素は?

    ANSWER
    IP、タイムスタンプ、リクエスト、ステータス、リファラー、UA等
    クリックして解説を表示
    EXPLANATION

    Combined Log Formatには、IPアドレス、識別子、ユーザー、タイムスタンプ、リクエスト、ステータス、サイズ、リファラー、ユーザーエージェントが含まれます。各フィールドを正確に抽出する必要があります。

  • Q43

    正規表現(?<ip>\S+) \S+ \S+ \[(?<time>[^\]]+)\] "(?<request>[^"]*)" (?<status>\d+) (?<size>\S+)は何をパースしていますか?

    ANSWER
    Apache Common Log Format
    クリックして解説を表示
    EXPLANATION

    このパターンはApacheのCommon Log Formatをパースし、IPアドレス、タイムスタンプ、リクエスト、ステータスコード、レスポンスサイズを名前付きグループで抽出します。

  • Q44

    正規表現のコンパイルとインタープリタ実行の違いは?

    ANSWER
    コンパイル済みは繰り返し使用時に高速
    クリックして解説を表示
    EXPLANATION

    コンパイル済み正規表現は事前に最適化され、繰り返し使用時に高速です。インタープリタ実行は毎回パースするため、単発使用には適していますが繰り返しには非効率です。

  • Q45

    正規表現.NETRegexOptions.Compiledフラグの効果は?

    ANSWER
    ILへのコンパイルによる高速化(初期コストあり)
    クリックして解説を表示
    EXPLANATION

    RegexOptions.CompiledはパターンをILにコンパイルし、マッチング速度を向上させます。ただし、初期コンパイルに時間がかかり、メモリ使用量も増加します。

  • Q46

    正規表現で大量のデータを処理する際のメモリ効率を改善する方法は?

    ANSWER
    ストリーミング処理、非キャプチャグループの使用
    クリックして解説を表示
    EXPLANATION

    大量データの処理では、ストリーミング処理(行単位)、マッチイテレータの使用、不要なキャプチャの回避、早期終了条件の設定などでメモリ効率を改善できます。

  • Q47

    Pythonのre.finditer()re.findall()の違いで、パフォーマンスに影響するのは?

    ANSWER
    finditer()はイテレータでメモリ効率が良い
    クリックして解説を表示
    EXPLANATION

    finditer()はイテレータを返すため、マッチを順次処理でき、メモリ効率が良いです。findall()はすべてのマッチをリストとして返すため、大量のマッチがある場合にメモリを消費します。

  • Q48

    正規表現でマルチバイト文字(日本語など)を扱う際の注意点は?

    ANSWER
    Unicodeモードの確認、サロゲートペアの扱いに注意
    クリックして解説を表示
    EXPLANATION

    マルチバイト文字はエンコーディングにより複数バイトで表現されます。正規表現エンジンがUnicode対応か、.がサロゲートペアを正しく扱うか確認が必要です。

  • Q49

    正規表現^\p{L}+$で日本語文字列「こんにちは」はマッチしますか?(Unicode対応の場合)

    ANSWER
    マッチする
    クリックして解説を表示
    EXPLANATION

    \p{L}はUnicodeの「Letter」カテゴリにマッチし、日本語のひらがな・カタカナ・漢字も含まれます。「こんにちは」はすべてひらがななのでマッチします。

  • Q50

    正規表現(?<=\d)(?=(\d{3})+(?!\d))を使用して「1234567」に置換処理を行うと、どの位置にマッチしますか?

    ANSWER
    「1」と「2」の間、「4」と「5」の間
    クリックして解説を表示
    EXPLANATION

    このパターンは数字の後ろで、その後に3桁の数字のグループが続く位置にマッチします。「1234567」では「1」と「2」の間、「4」と「5」の間にマッチします。カンマ挿入に使用できます。

STAGE 6
5160問目 • 10
  • Q51

    正規表現でCSVファイルをパースする際の課題は?

    ANSWER
    引用符、エスケープ、フィールド内改行の処理が複雑
    クリックして解説を表示
    EXPLANATION

    CSVはフィールド内の引用符、エスケープされた引用符、改行を含むフィールドなど複雑なケースがあります。正規表現よりもCSVパーサーライブラリを使用することが推奨されます。

  • Q52

    正規表現"([^"]*(?:""[^"]*)*)"|([^,]+)は何をパースしようとしていますか?

    ANSWER
    CSVフィールド(引用符とエスケープを考慮)
    クリックして解説を表示
    EXPLANATION

    このパターンはCSVフィールドをパースしようとしています。引用符で囲まれたフィールド(""でエスケープされた引用符を含む)と、引用符なしのフィールドの両方にマッチします。

  • Q53

    正規表現\b[A-Z][a-z]+(?:\s[A-Z][a-z]+)*\bは何にマッチしますか?

    ANSWER
    大文字で始まる単語の連続(人名形式)
    クリックして解説を表示
    EXPLANATION

    このパターンは大文字で始まり小文字が続く単語が、スペースで区切られて連続するものにマッチします。人名(「John Smith」など)の形式を想定しています。

  • Q54

    正規表現で「キャメルケース」を「スネークケース」に変換する際に使用するパターンとして適切なのは?

    ANSWER
    (?<=[a-z])(?=[A-Z])の位置に_を挿入
    クリックして解説を表示
    EXPLANATION

    キャメルケース(camelCase)をスネークケース(snake_case)に変換するには、小文字の後の大文字を見つけて、その前にアンダースコアを挿入します。(?<=[a-z])(?=[A-Z])がその位置にマッチします。

  • Q55

    正規表現で重複した単語(「the the」など)を検出するパターンは?

    ANSWER
    \b(\w+)\s+\1\b
    クリックして解説を表示
    EXPLANATION

    \b(\w+)\s+\1\bは単語をキャプチャし、空白を挟んで同じ単語が繰り返される場合にマッチします。タイポの検出に使用されます。

  • Q56

    正規表現でプログラミング言語のコメントを削除する際の注意点は?

    ANSWER
    文字列内のコメント記号、ネスト、複数形式の考慮が必要
    クリックして解説を表示
    EXPLANATION

    コメント削除は、文字列リテラル内のコメント記号、ネストしたコメント(一部言語)、複数行コメントと単一行コメントの混在など、多くのエッジケースがあります。

  • Q57

    正規表現/\*[\s\S]*?\*/|//.*$は何を検出しますか?

    ANSWER
    C/C++/Java形式のコメント(複数行と単一行)
    クリックして解説を表示
    EXPLANATION

    このパターンはCスタイルの複数行コメント/* ... */(非貪欲)と単一行コメント// ...にマッチします。コメント削除に使用されます。

  • Q58

    正規表現で空白の正規化(連続空白を単一スペースに)を行うパターンは?

    ANSWER
    \s+
    クリックして解説を表示
    EXPLANATION

    \s+は1つ以上の空白文字にマッチします。これを単一のスペースに置換することで、連続空白を正規化できます。

  • Q59

    正規表現で文字列の先頭と末尾の空白を削除(trim)するパターンとして適切なのは?

    ANSWER
    ^\s+|\s+$
    クリックして解説を表示
    EXPLANATION

    ^\s+|\s+$は文字列の先頭の空白、または末尾の空白にマッチします。これを空文字に置換することでtrim操作ができます。

  • Q60

    正規表現(?:^|\G)\s*(\S+)\s*(?:,|$)はCSVライクなデータをどのように処理しますか?

    ANSWER
    順次フィールドをマッチして値をキャプチャ
    クリックして解説を表示
    EXPLANATION

    \Gは前回のマッチ終了位置からマッチを開始します。このパターンは連続したCSVフィールドを順番にマッチし、各フィールドの値をキャプチャします。

STAGE 7
6170問目 • 10
  • Q61

    正規表現でBase64エンコードされた文字列を検出するパターンとして適切なのは?

    ANSWER
    [A-Za-z0-9+/]+=*(長さが4の倍数)
    クリックして解説を表示
    EXPLANATION

    Base64は英数字、+、/で構成され、末尾にパディングの=(0〜2個)が付くことがあります。長さは4の倍数です。[A-Za-z0-9+/]+=*が基本パターンです。

  • Q62

    正規表現でUUID(v4)を検証するパターンとして正しい特徴は?

    ANSWER
    3番目のグループが4で始まり、4番目が8/9/a/bで始まる
    クリックして解説を表示
    EXPLANATION

    UUID v4はxxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxxの形式で、3番目のグループが「4」で始まり、4番目のグループが「8」「9」「a」「b」で始まります。

  • Q63

    正規表現^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$は何を検証していますか?

    ANSWER
    UUID v4
    クリックして解説を表示
    EXPLANATION

    このパターンはUUID version 4の形式を検証します。3番目のグループが「4」で始まり、4番目のグループが「8」「9」「a」「b」で始まることを確認しています。

  • Q64

    正規表現でセマンティックバージョニング(SemVer)を検証する際に含めるべき要素は?

    ANSWER
    MAJOR.MINOR.PATCH、プレリリース、ビルドメタデータ
    クリックして解説を表示
    EXPLANATION

    SemVerはMAJOR.MINOR.PATCHの形式で、オプションでプレリリース識別子(-alpha.1など)とビルドメタデータ(+build.123など)が付きます。

  • Q65

    正規表現^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$は何を検証していますか?

    ANSWER
    SemVer 2.0.0準拠のバージョン
    クリックして解説を表示
    EXPLANATION

    この複雑なパターンはセマンティックバージョニング(SemVer 2.0.0)の完全な仕様に準拠した検証を行います。先頭のゼロを禁止し、プレリリースとビルドメタデータの形式も検証します。

  • Q66

    正規表現で16進数のカラーコード(#RGB、#RRGGBB、#RRGGBBAA)を検証するパターンは?

    ANSWER
    #([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})
    クリックして解説を表示
    EXPLANATION

    CSSカラーコードは#に続く3桁(#RGB)、6桁(#RRGGBB)、8桁(#RRGGBBAA)の形式があります。#([0-9a-fA-F]{3}){1,2,3}のような考え方が必要です。

  • Q67

    正規表現でJSONの文字列を厳密に検証する際の課題は?

    ANSWER
    有効なエスケープシーケンスのみ許可し、制御文字を拒否
    クリックして解説を表示
    EXPLANATION

    JSON文字列はダブルクォートで囲まれ、特定のエスケープシーケンス(\n、\t、\uXXXXなど)のみが許可されます。不正なエスケープや制御文字を拒否する必要があります。

  • Q68

    正規表現"(?:[^"\\\x00-\x1f]|\\["\\bfnrt]|\\u[0-9a-fA-F]{4})*"は何を検証していますか?

    ANSWER
    JSON仕様に準拠した文字列
    クリックして解説を表示
    EXPLANATION

    このパターンはJSON文字列の仕様に準拠した検証を行います。制御文字(\x00-\x1f)を禁止し、有効なエスケープシーケンスのみを許可します。

  • Q69

    正規表現でMarkdownのリンク[text](url)を検出するパターンとして適切なのは?

    ANSWER
    [([^]]+)](([^)]+))
    クリックして解説を表示
    EXPLANATION

    \[([^\]]+)\]\(([^)]+)\)は角括弧内のテキストと丸括弧内のURLを別々にキャプチャします。ネストした括弧は考慮していません。

  • Q70

    正規表現でMarkdownの見出し(#、##、### など)を検出するパターンは?

    ANSWER
    ^#{1,6}\s+(.+)$(複数行モード)
    クリックして解説を表示
    EXPLANATION

    ^#{1,6}\s+(.+)$は行の先頭から1〜6個の#、空白、見出しテキストにマッチします。複数行モードが必要です。

STAGE 8
7180問目 • 10
  • Q71

    正規表現でTwitter/Xのハッシュタグを検出するパターンで考慮すべき点は?

    ANSWER
    数字のみ無効、特殊文字での終了、Unicode対応
    クリックして解説を表示
    EXPLANATION

    ハッシュタグは#に続く文字で、数字のみは無効、途中の特殊文字で終了、長さ制限、Unicode文字(日本語など)のサポートなど考慮が必要です。

  • Q72

    正規表現でTwitter/Xのメンション(@username)を検出する際の制約は?

    ANSWER
    英数字とアンダースコアのみ、15文字以内、数字のみ無効
    クリックして解説を表示
    EXPLANATION

    ユーザー名は英数字とアンダースコアのみ、15文字以内、数字のみは無効などの制約があります。@[a-zA-Z_][a-zA-Z0-9_]{0,14}のようなパターンになります。

  • Q73

    正規表現でHTTP/HTTPS URLを検出する際、false positiveを減らすための工夫は?

    ANSWER
    文末記号の除外、有効なTLD、URLエンコードの考慮
    クリックして解説を表示
    EXPLANATION

    URLの検出では、文末のピリオドや括弧を含めない、有効なTLDのリストを使用、IPアドレス形式の考慮、国際化ドメイン名の扱いなどでfalse positiveを減らせます。

  • Q74

    正規表現で電話番号を国際形式に正規化する際のアプローチは?

    ANSWER
    数字抽出、国番号判定、形式統一の段階的処理
    クリックして解説を表示
    EXPLANATION

    電話番号の正規化では、まず数字以外を除去、国番号の有無を判定、形式を統一するという段階的なアプローチが効果的です。libphonenumberなどのライブラリ使用も推奨されます。

  • Q75

    正規表現で日本語テキストから「名詞」を抽出することは可能ですか?

    ANSWER
    形態素解析が必要で、正規表現だけでは不可能
    クリックして解説を表示
    EXPLANATION

    正規表現は形態素解析(品詞判定)の機能を持ちません。日本語の名詞抽出には、MeCabやSudachiなどの形態素解析器を使用する必要があります。

  • Q76

    正規表現で回文(「しんぶんし」など)を検出することは?

    ANSWER
    一般的には不可能(再帰で限定的に可能な実装もある)
    クリックして解説を表示
    EXPLANATION

    正規表現は正規言語を扱い、回文の検出には文脈自由文法が必要です。一部の実装では再帰パターンで限定的に対応できますが、一般的には不可能です。

  • Q77

    正規表現^((.)(.)(.?).?\4\3\2)$は何に限定的にマッチしますか?

    ANSWER
    最大7文字の回文
    クリックして解説を表示
    EXPLANATION

    このパターンは後方参照を使用して、最大7文字の回文にマッチします。中央の文字は1文字または空で、両端から対称な文字配置を検証します。

  • Q78

    正規表現でプライムナンバー(素数)かどうかを判定することは?

    ANSWER
    可能(バックトラックを利用したトリック)
    クリックして解説を表示
    EXPLANATION

    正規表現で素数判定が可能な有名なトリック^.?$|^(..+?)\1+$(合成数にマッチ)があります。1文字単位で因数分解をシミュレートしています。

  • Q79

    正規表現^.?$|^(..+?)\1+$で文字列「aaaa」(4つのa)はマッチしますか?

    ANSWER
    マッチする(4は合成数)
    クリックして解説を表示
    EXPLANATION

    このパターンは1文字以下、または2文字以上のパターンが2回以上繰り返す文字列にマッチします。「aaaa」は「aa」×2なのでマッチします(4は合成数)。

  • Q80

    正規表現のテスト・デバッグツールとして広く使われているのは?

    ANSWER
    regex101.com、regexr.comなどのオンラインツール
    クリックして解説を表示
    EXPLANATION

    regex101.com、regexr.com、debuggex.comなどのオンラインツールは、パターンの説明、マッチのハイライト、パフォーマンス分析などの機能を提供します。

STAGE 9
8190問目 • 10
  • Q81

    正規表現を使用したコードレビューで確認すべき点として最も重要なのは?

    ANSWER
    ReDoS脆弱性、エッジケース、可読性、テスト網羅性
    クリックして解説を表示
    EXPLANATION

    正規表現のレビューでは、ReDoS脆弱性、エッジケースの処理、可読性(コメント、命名)、テストの網羅性を確認することが重要です。

  • Q82

    正規表現の保守性を高めるためのベストプラクティスは?

    ANSWER
    拡張モード、名前付きグループ、分割、テスト
    クリックして解説を表示
    EXPLANATION

    保守性向上には、拡張モードでの整形・コメント、名前付きキャプチャグループ、複雑なパターンの分割、十分なテストケースが効果的です。

  • Q83

    正規表現(?x) ^ # 文字列の先頭 (?=.*[A-Z]) # 大文字を含む (?=.*[a-z]) # 小文字を含む (?=.*\d) # 数字を含む .{8,} # 8文字以上 $ # 文字列の末尾 のような書き方の利点は?

    ANSWER
    可読性と保守性が向上する
    クリックして解説を表示
    EXPLANATION

    拡張モード((?x))を使用すると、空白とコメントが許可され、複雑なパターンを読みやすく、保守しやすく記述できます。

  • Q84

    正規表現でUnicode正規化(NFC/NFD)が問題になるケースは?

    ANSWER
    アクセント付き文字など、複数の表現形式がある場合
    クリックして解説を表示
    EXPLANATION

    同じ見た目の文字でも、合成済み文字(NFC: é)と基底文字+結合文字(NFD: e + ´)では内部表現が異なります。正規表現でマッチしない場合があるため、事前に正規化が必要です。

  • Q85

    正規表現エンジンのオプティマイザが行う最適化として一般的なものは?

    ANSWER
    先頭文字スキップ、固定文字列検索、バックトラック削減
    クリックして解説を表示
    EXPLANATION

    正規表現エンジンは、先頭文字の高速スキップ、固定文字列の事前検索、不要なバックトラックの削減などの最適化を行います。

  • Q86

    正規表現でDNAシーケンス(A、T、G、Cの配列)を扱う際の考慮点は?

    ANSWER
    長大なデータ、効率的なアルゴリズム、専用ツールの検討
    クリックして解説を表示
    EXPLANATION

    DNAシーケンスは非常に長く(数百万塩基)、パターンも複雑になる可能性があります。効率的なアルゴリズム(Boyer-Mooreなど)や専用ツール(BLAST等)の使用が推奨されます。

  • Q87

    正規表現を使用したテキストエディタの検索・置換機能で一般的にサポートされていない機能は?

    ANSWER
    置換時のプログラム実行(コード評価)
    クリックして解説を表示
    EXPLANATION

    テキストエディタの正規表現機能は通常、基本的なパターンマッチと後方参照による置換をサポートしますが、プログラム実行や動的な計算は通常サポートされません。

  • Q88

    正規表現の代替として、より適切な場合があるツールや手法は?

    ANSWER
    パーサー、状態機械、文字列関数など用途に応じて選択
    クリックして解説を表示
    EXPLANATION

    用途によっては、パーサージェネレーター、専用パーサーライブラリ、状態機械、文字列関数(split、indexOf等)がより適切な場合があります。正規表現は万能ではありません。

  • Q89

    正規表現で「先読み」と「後読み」の両方を使用する複合パターンの例として適切なのは?

    ANSWER
    (?<=$)\d+(?=.00)
    クリックして解説を表示
    EXPLANATION

    (?<=\$)\d+(?=\.00)は、前に「$」があり(後読み)、後ろに「.00」が続く(先読み)数字にマッチします。「$100.00」の「100」にマッチします。

  • Q90

    正規表現の国際化対応で、言語によって異なる「単語の境界」の扱いは?

    ANSWER
    日本語などスペースで区切らない言語では\bが期待通り動作しない
    クリックして解説を表示
    EXPLANATION

    日本語・中国語などは単語間にスペースがないため、\b(単語境界)の動作が英語とは異なります。形態素解析や言語固有の処理が必要な場合があります。

STAGE 10
91100問目 • 10
  • Q91

    正規表現でスタックオーバーフローが発生する可能性があるのはどのような場合ですか?

    ANSWER
    深い再帰や大量のバックトラックが発生する場合
    クリックして解説を表示
    EXPLANATION

    非常に深い再帰や、長い文字列に対する複雑なパターンでバックトラックが多発すると、スタックオーバーフローが発生する可能性があります。特に再帰パターン使用時に注意が必要です。

  • Q92

    正規表現(*SKIP)(*FAIL)(PCREなど)の組み合わせの用途は?

    ANSWER
    特定のパターンを除外してマッチをスキップする
    クリックして解説を表示
    EXPLANATION

    (*SKIP)(*FAIL)は、その位置でマッチを「飛ばす」ために使用されます。特定のパターンを除外して他のパターンをマッチさせる際に有用です。

  • Q93

    正規表現で「バックトラッキング制御動詞」((*PRUNE)(*COMMIT)など)が提供するものは?

    ANSWER
    バックトラック動作の細かい制御
    クリックして解説を表示
    EXPLANATION

    バックトラッキング制御動詞は、正規表現エンジンのバックトラック動作を細かく制御できます。特定の位置でのバックトラック禁止やマッチの確定などが可能です。

  • Q94

    正規表現で条件分岐(?(condition)yes|no)の「condition」として使用できるものは?

    ANSWER
    キャプチャグループの有無、アサーションなど
    クリックして解説を表示
    EXPLANATION

    条件として、キャプチャグループ番号(そのグループがマッチしたか)、先読み/後読みアサーション、再帰レベルなどが使用できます(実装による)。

  • Q95

    正規表現ライブラリRE2(Google製)の特徴として正しいものは?

    ANSWER
    線形時間保証でReDoSに安全、後方参照は非サポート
    クリックして解説を表示
    EXPLANATION

    RE2は線形時間でマッチングを保証するため、ReDoS攻撃に対して安全です。ただし、後方参照などの一部機能はサポートしていません。

  • Q96

    正規表現でYAMLやTOMLなどの設定ファイルをパースすることの問題点は?

    ANSWER
    複雑な文法のため正規表現では完全なパースが困難
    クリックして解説を表示
    EXPLANATION

    YAMLやTOMLは複雑な文法(インデントベース、マルチライン、アンカー/エイリアスなど)を持ち、正規表現で完全にパースするのは非常に困難です。専用パーサーを使用すべきです。

  • Q97

    正規表現\p{Script=Han}は何にマッチしますか?

    ANSWER
    漢字(Han script)
    クリックして解説を表示
    EXPLANATION

    \p{Script=Han}はUnicodeの漢字(Han script)にマッチします。日本語、中国語、韓国語で使用される漢字文字が対象です。

  • Q98

    正規表現のベンチマーク時に注意すべき点として不適切なものは?

    ANSWER
    単一の短い入力でのみテストすれば十分
    クリックして解説を表示
    EXPLANATION

    ベンチマークでは、マッチ/不マッチ両方のケース、様々な入力長、ウォームアップ実行、JITコンパイルの影響などを考慮する必要があります。単一パターンのみのテストは不十分です。

  • Q99

    正規表現で「先読み」を複数組み合わせる((?=.*A)(?=.*B)(?=.*C))パターンの用途は?

    ANSWER
    複数条件の同時検証(AND条件)
    クリックして解説を表示
    EXPLANATION

    複数の先読みを組み合わせることで、複数の条件を同時にチェックできます。パスワード検証(大文字・小文字・数字・記号を含む)などで使用されます。

  • Q100

    正規表現を使用したサニタイズ処理のリスクとして最も重要なのは?

    ANSWER
    バイパス可能で不完全になりがち
    クリックして解説を表示
    EXPLANATION

    正規表現によるサニタイズは、エンコーディングの違い、新しい攻撃パターン、バイパス手法などにより不完全になりがちです。ホワイトリスト方式やコンテキストに応じたエスケープを使用すべきです。