この正規表現を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に貼り付けてエラーを確認し、修正を適用して修正します

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です