我試圖在文本文件中搜索2行文本(其中一個總是放在另一行之後)。一條線總是相同的:#EXTINF:Discovery Science
。然而第二個有一個始終是不同的,但有以下模式:「HTTP://」 ip地址「:」一些隨機端口IP地址「:」隨機端口2行正則表達式
例子:
#EXTINF:Discovery Science http://95.188.124.44:1234/udp/233.7.70.27:5000
這裏是我的代碼:
$file = "C:\1.m3u"
$Text = [IO.File]::ReadAllText($file)
[regex]$reg = "([#EXTINF:Discovery Science http://\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b])"
$match = $reg.match($Text)
$array = @()
$array = new-object collections.arraylist
$array = while ($match.Success)
{
$match.Groups[1].value
$match = $match.nextMatch()
write-host $match
}
你應該從正則表達式中除去'''''''',否則它會尋找在這樣創建的字符類中定義的1個符號。另外,第一個'\ b'是多餘的,你可以刪除它('// \ d {1,3}'...) –
我沒有在你的示例文本(或你的正則表達式)中看到第二行, ,但第一個端口和第二個IP地址之間的附加文本「/ udp /」。另外,你不需要匹配單詞邊界,所以刪除'\ b'。 –
啊,是的,可能會有一個linebreak!然後,爲了安全起見,我認爲你可以使用'(#EXTINF:Discovery Science \ s + http:// \ d {1,3} \。\ d {1,3} \。\ d {1,3 } \。\ d {1,3})'。 '\ s'匹配任何空格。 –