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和通配符的单词边界.*。您只希望您的数字匹配。

您想使用[\d]+which 表示连续 1 个或多个数字的任何数字。

根据您的示例,请在此处查找验证。用于验证

但是:如果要捕获整个字符串,可以在两端保留单词边界和通配符,它​​将捕获整个字符串。 这里的例子

于 2013-03-21T16:02:49.817 回答
0

那 .* 将是“贪婪的”并将所有内容都吸收到满足匹配所需的最小位数。

解决此问题的一种方法:

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