3

MATLAB 2012 で解析したい一連の文字列があり、すべて次の形式になっています。

string-int-int-int-int-string

3 番目の整数を取り出したいのですが (残りは「どうでもいい」です)、MATLAB を何年も使用しておらず、正規表現を更新する必要があります。正規表現を使ってみまし'(.*)-(.*)-(.*)-\d-(.*)'たが、サイコロはありませんでした。MATLAB regexp pageを確認しましたが、その情報をこのケースに適用する方法を理解できませんでした。

望ましい結果を得る方法を知っている人はいますか? もしそうなら、あなたが使っている表現がその結果を得るために何をしているのか説明していただけますか?

前もって感謝します!

4

2 に答える 2

5
^.*?-.*?-.*?-(\d+)-.*?-.*?$

また

^(?:[^-]*?-){3}(\d+)(?:.*?)$

Group1 に必要なデータが含まれるようになりました

于 2012-10-26T16:54:45.450 に答える
5
str = 'XyzStr-1-2-1000-56789-ILoveStackExchange.txt';

[tok] = regexp(str, '^.+?-.+?-.+?-(\d+?)-.+?-.+?', 'tokens');

tok{:}
ans = 
    '1000'

アップデート

ご要望に応じて説明します。

  • ^- 「アンカー」、または文字列の先頭に一致。
  • .+?- ワイルドカード マッチ、1 つ以上、貪欲でない。
  • -- リテラル ダッシュ/ハイフン。
  • (\d+?)- 数字が一致し、1 つ以上、貪欲でない、トークンにキャプチャされます。
于 2012-10-26T17:43:06.823 に答える