我有这个文字,我只想要连接时间和实际分钟
2015:05:02-08:29:52: Connect Time 11.4 Minutes.
2015:15:12-13:39:41: Connect Time 22.51 Minutes.
我试过这个RegEx:
$_ -match 'Connect Time (.*[^minutes])\n'
但它给了我连线时间11.4分钟。
有什么想法吗?
答案 0 :(得分:0)
如果我理解了你的要求那么 你可以试试这个:
Connect\s+Time\s+\d+(\.\d+)?
它会给你:
Connect Time 11.4
Connect Time 22.51
答案 1 :(得分:0)
在powershell中,你可以这样做。如果您只想要时间Matches[1]
,或者想要全文Connect Time 11.4
,那么您可以使用Matches[0]
。我正在为单个字符串变量执行此操作,您可以将其扩展为您拥有的输入
$temp -match 'Connect\s+Time\s+(\d+.\d+)'
$Matches[0] ## Outputs Connect Time 11.4
$Matches[1] ## Outputs 11.4
对于数组,您可以这样做:
$temp3 = "2015:05:02-08:29:52: Connect Time 11.4 Minutes.", "2015:15:12-13:39:41: Connect Time 22.51 Minutes.", "3.9"
$temp3 | %{ $found = $_ -match 'Connect\s+Time\s+(\d+.\d+)'; if($found) { Write-Host $Matches[1] } else { Write-Host "Not Found" }}
# Output
# 11.4
# 22.51
# Not Found
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以匹配1位数字,然后是.
,如果子字符串后面跟着0 +空格字符,则可以匹配1+位 ;"分钟& #34;:
$_ -match '\d+\.\d+(?=\s*Minutes)'
请参阅regex demo。
注意:必须转义.
以匹配文字点。
\d+
- 1+位数\.
- 一个点\d+
- 1+位数(?=\s*Minutes)
- 只检查是否有0+空格的正向前瞻,并且在与Minutes
匹配的最后一个数字后立即检查\d+
。如果没有,则不返回匹配。