2016-12-05 4 views
2

1つ以上のダッシュ( ' - 'または ' - ')で始まる文字列を検索したい。MATLAB正規表現。 1つまたは2つの繰り返し文字を見つける方法

私の正規表現が最終テスト文字列に対して1を返すのはなぜですか?正規表現文書によれば、expr {m、n} "はm回連続してn回連続して出現すると式にマッチする"ので、 " - {1,2}"は"-""--"のインスタンスを見つけるはずですが、 "---"のインスタンスを無視します。何か不足していますか?

答えて

2

正規表現が部分と一致しています。これを避けるには、1つまたは2つのハイフンの後にさらにハイフンがある場合、正規表現エンジンに明示的にマッチを失敗させる必要があります。

だから、あなたは、パッテンの終わりに否定先読みを使用することがあります。

^-{1,2}(?!-) 

regex demo

を参照してください(?!-)先読みがゼロ幅アサーションあるので、それは意志一致する---の文字列を許可します。

+1

素晴らしい。ご説明ありがとうございます。 – EddyTheB

1

次のように正規表現を変更することができます。

regexp(Strs, '^-{1,2}[^-]') 

を1つのまたは2つのマイナスの後に、これ以上のマイナスを言うために。

+0

FYIでは、 ''^- {1,2} [^ - ] ''正規表現は' --'や '--'文字列と一致しません。 –

+0

@WiktorStribiżew、あなたは正しいです。ありがとうございました。あなたのソリューションはより良い。 –

+0

私はそれを残しておきます。なぜなら、 ' - 'または ' - 'フラグが仮定されていない場合、解析オプションとして役立つかもしれないからです。 –

関連する問題