使用powershell中的regex隔离字符串中的可变长度数

时间:2013-03-21 15:57:10

标签: regex powershell

我正在尝试解析字符串以在字符串中查找可变长度数。

以下是我正在测试的一些字符串...

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后面的量词时,它只给出了我的位数

2 个答案:

答案 0 :(得分:0)

如果您尝试仅隔离数字,则不需要使用\b和通配符.*的单词边界。你只想要你的数字匹配。

您想要使用[\d]+,其中包含连续1个或更多的任何数字。

根据您的示例,查看here for validation.进行验证

但是:如果要捕获整个字符串,可以在两端保留单词bounds和通配符,它​​将捕获完整的字符串。 Example here

答案 1 :(得分:0)

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

解决这个问题的一种方法:

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