2013-03-21 2 views
0

문자열 내에서 가변 길이 번호를 찾기 위해 문자열을 구문 분석하려고합니다. 여기 powershell에서 regex를 사용하여 문자열에서 가변 길이 숫자를 분리하십시오.

내가 \ d를 뒤에 정량을 변경하면

testing_again3with_a_number이

$Regex = "\b.*([\d]{1,}).*\b" 
foreach($result in $testdata) { 
    if($result -match $Regex) { 
      $Matches[1] 
    } 
} 

이 만 제공 this_is_another_test243with_a_number this_is_a_test_string25365with_a_number

... 난에 대해 테스트하고있어 일부 문자열 그 자릿수는

입니다.
+0

난 당신이 마지막 문장에 의해 무슨 뜻인지 이해가 안 돼요 –

답변

0

That. *는 "greedy"가되어 일치하는 데 필요한 최소 자릿수까지 모두 빨아들입니다. 그 문제를 해결하는

한 가지 방법은 :

$Regex = "\b\D*([\d]{1,}).*\b" 
0

숫자 만 분리하려는 경우 \b 및 와일드 카드 .*이라는 단어 경계가 필요하지 않습니다. 당신은 당신의 숫자가 일치하기를 원합니다.

[\d]+라고 말하면 하나 이상의 숫자가있는 행을 사용하고 싶습니다.

은 예를 바탕으로 검증

그러나

에 대한 here for validation. 모양 : 당신이 전체 문자열을 캡처하려는 경우, 당신은 양쪽에 단어 경계와 와일드 카드를 남길 수 있으며 전체 문자열을 캡처합니다. Example here

관련 문제