この正規表現をsourceslist.nanorc
でサポートできますか?
正規表現:
cdrom:\[[a-zA-Z0-9\._-\(\) ]+\]/
エラー:
Bad regex "cdrom:\[[a-zA-Z0-9\._-\(\) ]+\]/": Invalid range end
ありがとうございます。
コメント
回答
問題は、文字リスト内の-
記号の配置にある可能性があります。
[a-z]
がivid = “の省略形であるように、文字の範囲が[start-end]
で表現できるという事実をすでに使用しています。 8338d40c9e “>
(ただし、以下の警告を参照してください)。つまり、-
は特殊文字であり、2つの"正規表現"文字の場合、これら2つの文字とその間のすべての文字を含むさらに別の範囲を示すと解釈されます。
もちろん、これは-
は、字句的に"後で"の並べ替え順序になり、その前の文字がエラーメッセージの理由にもなります(あなた代わりに(-_
と言うと、問題が解決しないことがわかります。ただし、それでは問題は解決しません)。
明らかに必要なのでリテラル-
と一致し、 .nanorc
で正規表現がどのように解釈されるかに応じて、どちらか / p>
- エスケープする必要があります(つまり、
\-
)、または - 文字の最初または最後に配置しますリスト(つまり
[-etc]
または[etc-]
)は、POSIXおよびGNU正規表現の標準であるため、 Linuxシステムで最も可能性の高いソリューション。
例を参照してください。 詳細についてはこちらをご覧ください。
警告:" [a-z]
が[abcdefghijkl...xyz]
の省略形である上記のステートメントはです。無条件に真実ではありません!範囲がどのように解釈されるかは、ロケール設定、特に照合順序によって異なります。
- " C "ロケールの場合、順序はASCIIコード値、つまり
ABC...XYZ...abc...xyz
に従います。ここで、[a-z]
は実際には"すべての小文字"を意味します。 - 他のほとんどのロケールでは、大文字と小文字がグループ化されます。つまり、順序は
aAbBcC...xXyYzZ
です。ここで、[a-z]
は、"すべての小文字とZ
を除くすべての大文字を意味します。 - " umlauts "のような非ASCII文字の処理はさらに別の問題です。
回答
これを https://regexr.com/ はデバッグの改善に役立ちます。
-
のように、範囲内で-
をエスケープしませんでした。範囲を指定するために使用されます。
古い:
cdrom:\[[a-zA-Z0-9\._-\(\) ]+\]/
修正:
cdrom:\[[a-zA-Z0-9\._\-\(\) ]+\]/
コメント
- リンクをありがとう
- 括弧で囲まれた式でダッシュをエスケープしても効果はありません。バックスラッシュは、
[...]
内の式に特別な意味を持たないことに注意してください。これは、[\.]
がドットまたはバックスラッシュと一致することも意味します。 - 本当に?私は疑う。スラッシュを一致させるには、スラッシュを2回エスケープして\\一致させる必要があります
- @JamesJohnたとえば、
grep '[\]' <<<'\'
、またはgrep -o '[\.]' <<<'123\.abc'
- 問題をgrepに貼り付けてエラーを確認し、修正を適用して修正します
-
):これは範囲として解釈される可能性があります…