Как использовать Swift 5.7 RegexBuilder, чтобы найти слово после предложения
я получаю отчет отnetworksetup -listnetworkserviceorder
команда терминала для всех сетевых служб. Возвращаемый текст выглядит следующим образом:
An asterisk (*) denotes that a network service is disabled.
(1) Ethernet
(Hardware Port: Ethernet, Device: en0)
(2) Wi-Fi
(Hardware Port: Wi-Fi, Device: en1)
(3) iPhone USB
(Hardware Port: iPhone USB, Device: en6)
(4) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)
(5) VPN (VPN2)
(Hardware Port: L2TP, Device: )
Я пытаюсь найти устройство для Wi-Fi(en1
) с RegexBuilder
let search = Regex {
"Hardware Port: Wi-Fi, Device: "
Capture {
OneOrMore(.word)
}
}
if let result = try? search.wholeMatch(in: info) {
print("Device: \(result.1)")
}
Это работает только в том случае, еслиHardware Port: Wi-Fi, Device:
строка находится в начале текста. Если перед приведенным выше предложением есть один или несколько символов, результатом будет
Я пробовал с этим синтаксисом, и результат был таким же (nil
)
let search = /Hardware Port: Wi-Fi, Device: (\w+)/
1 ответ
Просто замените на.firstMatch
.
Как подсказывает название.wholeMatch
влияет на всю строку, соответствующую литералу шаблона с начальным «^» и конечным «$»