RegExp のコードインスペクション
このトピックでは、RegExp で利用できるすべての JetBrains Rider コードインスペクション を一覧表示します。
エディター | インスペクション設定 | インスペクション重大度 | 他の言語 設定ページ  Ctrl+Alt+S で、特定のインスペクションを切り替えたり、その重要度レベルを変更できます。
インスペクション | 説明 | デフォルトの重大度 |
|---|---|---|
匿名キャプチャーグループまたは数値バックリファレンス | RegExp 内の匿名のキャプチャーグループと数値の後方参照をレポートします。 これらは、RegExp ダイアレクトが名前付きグループおよび名前付きグループの参照をサポートしている場合にのみ報告されます。 名前付きグループと名前付きバックリファレンスはコードの可読性を向上させるため、代わりに使用することをお勧めします。 キャプチャーが不要な場合は、キャプチャーしないグループ、つまり 例:
(\d\d\d\d)\1
より良い正規表現パターンは次のようになります。
(?<quad>\d\d\d\d)\k<quad>
2017.2 の新機能 | |
予期しない位置のアンカー開始または終了 | パターンの先頭にない 例:
(Price $10)
2018.1 の新機能 | |
連続するスペース | RegExp 内の複数の連続するスペースを報告します。 デフォルトではスペースは表示されないため、必要なスペースの数を確認するのは難しい場合があります。 連続するスペースを単一のスペースとカウントされた数量詞に置き換えることで、RegExp をより明確にすることができます。 例:
( )
クイックフィックスが適用された後:
( {5})
2017.1 の新機能 | |
カスタム正規表現インスペクション | カスタム正規表現インスペクション | |
論理和内の重複する分岐 | 正規表現の交互で重複するブランチを報告します。 ブランチを複製すると、マッチングが遅くなり、表現の意図がわかりにくくなります。 例:
(alpha|bravo|charlie|alpha)
クイックフィックスが適用された後:
(alpha|bravo|charlie)
2017.1 の新機能 | |
重複した文字がある文字クラス | RegExp 文字クラス内の重複文字を報告します。 重複する文字は不要であり、正規表現のセマンティクスを変更せずに削除できます。 例:
[aabc]
クイックフィックスが適用された後:
[abc]
| |
論理和の分岐が空です | 正規表現の交互で空のブランチを報告します。 空のブランチは空の文字列とのみ一致し、ほとんどの場合、望ましいものではありません。 このインスペクションは、交代の開始時または終了時に単一の空のブランチを報告しません。 例:
(alpha||bravo)
クイックフィックスが適用された後:
(alpha|bravo)
2017.2 の新機能 | |
エスケープされたメタ文字 | エスケープされたメタ文字を報告します。 一部の RegExp コードスタイルでは、メタ文字をキャラクタークラス内に配置することで、正規表現を理解しやすくするよう指定されています。 このインスペクションは、キャラクタークラス内で追加のエスケープが必要となるため、メタ文字 例:
\d+\.\d+
クイックフィックスが適用された後:
\d+[.]\d+
2017.1 の新機能 |
|
8 進数のエスケープ | 後方参照と混同しやすい 8 進エスケープを報告します。 混乱を避けるために 16 進数のエスケープを使用してください。 例:
\07
クイックフィックスが適用された後:
\x07
2017.1 の新機能 |
|
冗長な '\d'、'[:digit:]'、または '\D' クラス要素 | 1 つのクラスで 例:
[\w\d]
クイックフィックスが適用された後:
[\w]
2022.2 の新機能 | |
冗長な文字エスケープ | 意味を維持しながら、エスケープされていない文字に置き換えることができる冗長な文字エスケープシーケンスを報告します。 文字クラスの外部で必要な多くのエスケープシーケンスは、文字クラスの角括弧 一部のダイアレクト(JavaScript、Python など)では、文字クラスの外で波括弧 例:
\-\;[\.]
クイックフィックスが適用された後:
-;[.]
括弧 '}'および']' を閉じるエスケープを無視するオプションは、正規表現ダイアレクトによってエスケープ解除が許可されている場合に、 2017.3 の新機能 | |
冗長なネストした文字クラス | 不要なネストされた文字クラスを報告します。 例:
[a-c[x-z]]
クイックフィックスが適用された後:
[a-cx-z]
2020.2 の新機能 | |
正規表現は単純化できます | 簡略化できる正規表現を報告します。 例:
[a] xx* [ah-hz]
クイックフィックスが適用された後:
a x+ [ahz]
2022.1 の新機能 | |
単一文字の論理和 | RegExp で単一文字の交替を報告します。 代わりに文字クラスを使用する方が簡単です。 これにより、マッチングパフォーマンスも向上する可能性があります。 例:
a|b|c|d
クイックフィックスが適用された後:
[abcd]
2017.1 の新機能 | |
疑わしい後方参照 | 実行時に解決できない参照を報告します。 これは、後方参照が何にも一致しないことを意味します。 グループが逆参照の後に定義されている場合、またはグループが交互の別のブランチで定義されている場合、逆参照は解決できません。 後方参照の後に定義されたグループの例:
\1(abc)
異なるブランチのグループと後方参照の例:
a(b)c|(xy)\1z
2022.1 の新機能 | |
不要な非キャプチャーリンググループ | 試合結果に影響を与えない不要な非キャプチャーグループを報告します。 例:
Everybody be cool, (?:this) is a robbery!
クイックフィックスが適用された後:
Everybody be cool, this is a robbery!
2021.1 の新機能 |