0

文字列を解析して、文字列内の可変長の数値を見つけようとしています。

ここに私がテストしているいくつかの文字列があります...

this_is_a_test_string25365with_a_number

this_is_another_test243with_a_number

testing_again3with_a_number

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

\d の後ろの量指定子を変更すると、その桁数しか得られません

4

2 に答える 2

0

数字だけを分離しようとしている場合は、単語の境界と\bワイルドカードは必要ありません.*。数字だけを一致させたい。

whichを使用したい場合[\d]+は、1 つ以上が連続している任意の数字を指定します。

あなたの例に基づいて、検証のためにここを見てください。検証用

ただし、文字列全体をキャプチャする場合は、単語の境界とワイルドカードを両端に残すことができ、文字列全体がキャプチャされます。 例はこちら

于 2013-03-21T16:02:49.817 に答える
0

その .* は「貪欲」になり、一致を満たすために必要な最小桁数まですべてを吸い上げます。

それを修正する1つの方法:

$Regex = "\b\D*([\d]{1,}).*\b"
于 2013-03-21T16:03:48.813 に答える