에서 텍스트 찾기 :나는 아래와 같은 문자열이 문자열
$var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
내가하지와 값에 얻을 싶어 ..이 어떻게 작동 할 수 있습니다?
에서 텍스트 찾기 :나는 아래와 같은 문자열이 문자열
$var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
내가하지와 값에 얻을 싶어 ..이 어떻게 작동 할 수 있습니다?
당신은 일치를 추출하는 정규식을 사용하여 시도 할 수 :
my $var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
$var=~/not=(.*?)&/;
my $a=$1;
$var=~/at=(.*?)&/;
my $b=$1;
say $a,",",$b;
출력 :
1234,6789
와우 훨씬 쉬워 .. 고맙습니다. :) – user2013387
당신이 찾고자하는 키 앞에'\ b'를 넣는 것이 좋습니다. 그래서 당신이 찾고있을 때'cat = 4 &'와 우연히 일치하지 않도록하십시오. '에'. 그래서'$ var = ~/\ bat = (. *?) & /;'라고 말하고 싶습니다. –
@ MarkNodine Thanks. 좋은 지적! –
당신이 할 수있는, 아마도, 제대로이 문자열을 구문 분석 할 수있는 적절한 모듈을 사용한다, 등 URI
및 URI::QueryParam
:
use strict;
use warnings;
use URI;
use URI::QueryParam;
my $str = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
my $url = URI->new($str);
my $not = $url->query_param('not');
my $at = $url->query_param('at');
print Dumper $not, $at;
출력 :
$VAR1 = '1234';
$VAR2 = '6789';
예 올바른 접근 방식입니다. –
가장 쉬운 것은 하나의 샷 해시에 모든 값을 끌어 아마이 후
my $var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
my %values = $var =~ /(\w+)(?:=(.*?))?(?:&|\Z)/g;
, 당신은
DB<5> x \%values
0 HASH(0x7fa133018f98)
'LMN' => undef
'at' => 6789
'not' => 1234
'xyz' => undef
해시 기능에 그룹을 알지 못했습니다. 흥미로운 라인. –
이 무슨이 연구했거나 시도 했습니까? – HamZa
나는 '?'를 사용하여 변수를 분할하려고 시도했다. 먼저 var2 = "not = 1234 & at = 6789 & xyz & LMN"변수를 제공합니다. – user2013387
그런 다음 &를 사용하여 분할합니다. 그것은 내 코드 라인을 증가시킨다. 다른 방법이 있는가 ?? – user2013387