我正在尝试解析字符串以在字符串中查找可变长度数。
以下是我正在测试的一些字符串...
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后面的量词时,它只给出了我的位数
答案 0 :(得分:0)
如果您尝试仅隔离数字,则不需要使用\b
和通配符.*
的单词边界。你只想要你的数字匹配。
您想要使用[\d]+
,其中包含连续1个或更多的任何数字。
根据您的示例,查看here for validation.进行验证
但是:如果要捕获整个字符串,可以在两端保留单词bounds和通配符,它将捕获完整的字符串。 Example here
答案 1 :(得分:0)
那个。*将会“贪婪”并将所有内容吸收到满足匹配所需的最小位数。
解决这个问题的一种方法:
$Regex = "\b\D*([\d]{1,}).*\b"