2017-08-02 7 views
0

Perl文字列から最後の5つの連続番号を取得し、そのシーケンスを直ちに続行する3文字を取得する方法を教えてください。たとえば、文字列が "これは、00000のDomテキストを実行したばかりの束であり、11111の意味はありません。"それから私は "11111"と "いいえ"を得たいでしょう。Perlテキストと3つの先行する文字から最後の5つの連続番号を取得

+0

「連続番号」とはどういう意味ですか? – choroba

+0

あなたはすでに頭の上に釘を持っていますが、間にスペースや文字がない数字を意味しています...例えば82649は5つの連続した数字のセットです...私の例は明確ではありませんでしたので、明確な質問。 – Padawan

答えて

0

正規表現を使用します任意の数字

  • {5}は以前のものは5回
  • ()括弧は、キャプチャグループに
  • .マッチ任意の文字を作成して一致させる必要があります意味

    #! /usr/bin/perl 
    use warnings; 
    use strict; 
    use feature qw{ say }; 
    
    my $string = 'This is just a bunch of ran 00000 Dom text. It has no 11111 meaning.'; 
    
    my ($pre, $digits) = $string =~ /.*(...)([0-9]{5})/; 
    say "<$pre>\t<$digits>"; 
    
    • [0-9]試合を(excpet newline)
    • *は、前のものが可能な限りゼロ回以上一致することを意味します。したがって.*は、文字列から可能な限り一致させて、00000の一致を防ぎます。
  • +1

    文字列に改行が含まれている場合はおそらく '/ s'が必要です(明示的にするには' \ A'かもしれません)。 – melpomene

    関連する問題