以下の形式を次のテキストを一致させるためにはfindstrを使用しようとすると:Findstr regexを使用してダッシュ( - )を一致させるにはどうすればいいですか?
PTB-14 AIR-217
私がいる問題は、私はちょうどfindstr
がダッシュで一致するように見えることはできませんということです-
。私は、バッチファイルに以下のスクリプトを作成しました:
set dash=-
echo.%dash%
echo !dash! | findstr /i /r /C:- >nul
if errorlevel 1 (
echo "ERROR!" >&2
)
私は/C:-
、/C:"-"
、/C:"\-"
と/C:"\\-"
で正規表現を試してみました。私はちょうどそれが一致するように見えることはできません。誰でも私が間違っていることを知っていますか?
あなたはdelayedexpansionを有効にしていないと思われますので、 'echo!dash!'は文字通りエコーされます。 'echo - | findstr/C:" - "'または 'echo%dash%| findstr/C:" - "' ' – LotPings
...または何らかの理由で遅延拡張を主張すると' cmd/V/Cエコー^!ダッシュ^! | findstr/I/C: " - " ';ところで、リテラル文字 '-'を検索するときに'/R'オプション(正規表現なし)を削除する必要があります。 'If ErrorLevel 1'の代わりに' || '演算子を使うこともできます:' ... | > nul findstr/I/C: " - " || >&2 nul echo ERROR ^^! '... – aschipfl
文字クラスが助けになるのだろうかと思います。ダッシュがクラス内の最初の文字、最後の文字または唯一の文字の場合は、リテラルとして扱われます。例えば: [-] –