0

この文字列から英数字を抽出しようとしています:

A_phase_I-II,_open-req_project_id_PX15RAD001

問題は、PX15RAD001という用語が文字列のどこにでも出現する可能性があることです。

以下の式を使用して英数字部分を抽出しようとしています。しかし、これは文字列全体を返します。Alum は英数字の有効なキーワードだと思いました。そうではありませんか?

(my $string = $line ) =~ s/\P{Alnum}//g;
  print $string;

前述の文字列の英数字部分を抽出するにはどうすればよいですか?

前もって感謝します。-シマク

4

3 に答える 3

0

あなたの入力に従って最後に:

> echo "A_phase_I-II,_open-req_project_id_PX15RAD001"|perl -lne 'print $1 if(/id_([A-Z0-9]*)/)'
PX15RAD001

途中で:

> echo "A_phase_I-II,_open-req_id_PX15RAD001_project" | perl -lne 'print $1 if(/id_([A-Z0-9]*)/)'
PX15RAD001

またはあなたの言葉で:

$line=~m/id_([A-Z0-9]*)/g;
print $1;
于 2013-06-27T11:42:53.457 に答える
0

@Vijay s Answer のコメントで作成されたいくつかのテストケースを次に示します。

my @line = (
  'A_phase_I-II,_open-req_project_id_PX15RAD001',
  '_PX15RAD001_A_phase_I-II,_open-req_project_id',
  'A_pha3333se_I-II,_ope_PX15RAD001_n-req_project',
  'A_phase_I-II,_PX15RAD001_open-req_projec123123123t_id',
  'A_phase_I-II_PX15RAD001_roject_id'
);
foreach my $string ( @line ) {
  $string =~ m{_([^_]{10})_?}g;
  print $1 . "\n" if $1;
}
于 2013-06-27T12:25:08.857 に答える