1つ以上のダッシュ( ' - 'または ' - ')で始まる文字列を検索したい。MATLAB正規表現。 1つまたは2つの繰り返し文字を見つける方法
私の正規表現が最終テスト文字列に対して1を返すのはなぜですか?正規表現文書によれば、expr {m、n} "はm回連続してn回連続して出現すると式にマッチする"ので、 " - {1,2}"は"-"
と"--"
のインスタンスを見つけるはずですが、 "---"
のインスタンスを無視します。何か不足していますか?
1つ以上のダッシュ( ' - 'または ' - ')で始まる文字列を検索したい。MATLAB正規表現。 1つまたは2つの繰り返し文字を見つける方法
私の正規表現が最終テスト文字列に対して1を返すのはなぜですか?正規表現文書によれば、expr {m、n} "はm回連続してn回連続して出現すると式にマッチする"ので、 " - {1,2}"は"-"
と"--"
のインスタンスを見つけるはずですが、 "---"
のインスタンスを無視します。何か不足していますか?
正規表現が部分と一致しています。これを避けるには、1つまたは2つのハイフンの後にさらにハイフンがある場合、正規表現エンジンに明示的にマッチを失敗させる必要があります。
だから、あなたは、パッテンの終わりに否定先読みを使用することがあります。
^-{1,2}(?!-)
を参照してください(?!-)
先読みがゼロ幅アサーションあるので、それは意志一致する-
と--
の文字列を許可します。
次のように正規表現を変更することができます。
regexp(Strs, '^-{1,2}[^-]')
を1つのまたは2つのマイナスの後に、これ以上のマイナスを言うために。
FYIでは、 ''^- {1,2} [^ - ] ''正規表現は' --'や '--'文字列と一致しません。 –
@WiktorStribiżew、あなたは正しいです。ありがとうございました。あなたのソリューションはより良い。 –
私はそれを残しておきます。なぜなら、 ' - 'または ' - 'フラグが仮定されていない場合、解析オプションとして役立つかもしれないからです。 –
素晴らしい。ご説明ありがとうございます。 – EddyTheB