2014-01-23 2 views
0

안녕이 파일에서 읽은 다음 문자열 :숫자의 문자열의 첫 번째 숫자를 찾기

231 352 502 24 532 0 1234 5

가 어떻게 숫자의 문자열의 첫 번째 숫자를 잡기 위해 펄 정규식을 사용합니까?

는 나는 아무 소용에 다음을 시도했다 :

$num =~ /(\d+)/

감사합니다.

+0

$ 인분 사용해 = ~/(^ \ D +)/I는이 값은 $ 1에 저장할 작동 바란다. –

답변

1

는 아래 잘 wokrs :

$ echo 231 352 502 24 532 0 1234 5 | perl -n -e 'print $1 if /(\d+)(.*)/' 
231 

$ echo 231 352 502 24 532 0 1234 5 | sed -r 's/([0-9]+)(.*)/\1/' 
231 
+0

(\ d +)가 올바른 것처럼 보이지만, 어떤 이유로 문자열의 모든 숫자를 얻고 있습니다. 파일에서 내 입력이 이상한 지 궁금해? 나는 이것을 더 깊이 조사해야 할 것이다. – user1220086

+0

명령과 그 출력을 게시하십시오. – slayedbylucifer

+0

$ line =/(\ d +) /; $ line = 231 352 502 24 532 0 1234 5. 전체 줄을 인쇄합니다. – user1220086

2
$s = "231 352 502 24 532 0 1234 5"; 
($num) = $s =~ /(\d+)/; 
print $num; 
1

당신은 매우 가깝습니다.

my $line = '231 352 502 24 532 0 1234 5'; 
my ($num) = $line =~ /(\d+)/; 
print $num; 

출력을

231 
+0

중복 답변. 이 정확한 코드는 @ ooga의 답변에 이미 나와 있습니다. – slayedbylucifer

+0

@slayedbylucifer : 가능한 한 늦게 * 변수를 선언하는 것이 중요합니다. 당신의 꼬리표는 무엇을 의미합니까? – Borodin

관련 문제