Регулярное выражение для сопоставления строки после похожих слов - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь разобрать файл журнала ниже;однако я немного застрял в поиске того, как сопоставить результаты после всех «Шаг = Число».

Шаг = 10, Шаг = 11, Шаг = 12, Шаг = 13, Шаг =14, Шаг = 15, Шаг = 16, Шаг = 18, Шаг = 17, Шаг = 20, Шаг = 19, Шаг = 25, Шаг = 21, Шаг = 26, Шаг = 28, Шаг = 24, Шаг = 22,Шаг = 23, Шаг = 27, Шаг = 30, Шаг = 29, Шаг = 35, Шаг = 34, Шаг = 32, Шаг = 31, Шаг = 38, Шаг = 37, Шаг = 36, Шаг = 50, Шаг =45, Шаг = 48, Шаг = 41, Шаг = 52, Шаг = 42, Шаг = 57, Шаг = 65, Шаг = 61, Шаг = 62, Шаг = 64, Шаг = 54, Шаг = 53, Шаг = 59,Step = 63, Step = 84, Step = 71, SelectedAuthenticationIdentityStores = paddedvalue, NetworkDeviceName = exampledevice, NetworkDeviceGroups = Источник обновлений: все источники: ACS, NetworkDeviceGroups = Тип устройства: все типы устройств: Wireless, NetworkDeviceGroups = Расположение: все расположения, ServiceSelectionMatcheduRule-1, IdentityPolicyMatchedRule = По умолчанию

Я думал о сопоставлении после комбинации: \ d \ s \, \ s

Идеальная цель - сопоставить following:

SelectedAuthenticationIdentityStores = paddedvalue, NetworkDeviceName = exampledevice, NetworkDeviceGroups = Источник обновлений: все источники: ACS, NetworkDeviceGroups = Тип устройства: все типы устройств: беспроводные, NetworkDeviceGroups = Location: All Locations, ServiceRuleMueleSlelectionM-1, IdentityPolicyMatchedRule = По умолчанию

Я попробовал следующее регулярное выражение: \d\s\\,\s(.*), но это соответствует всему после первого шага = число (Шаг = 10)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать другой. * В начале существующего шаблона, чтобы жадно потреблять все, кроме последнего возможного совпадения:

.*\d\s,\s(.*)

Демо: https://regex101.com/r/Oc7jUK/1

В качестве альтернативы, вы можетеиспользуйте положительный шаблон обратного просмотра, чтобы гарантировать, что совпадению предшествует \d\s,\s, и отрицательный шаблон обратного просмотра, чтобы гарантировать, что больше не будет \d\s,\s, который следует:

(?<=\d\s,\s)(?!.*\d\s,\s).*

Демо: https://regex101.com/r/Oc7jUK/2

0 голосов
/ 27 февраля 2019

почему бы не использовать регулярные выражения, которые соответствуют всем после SelectedAuthenticationIdentityStores, например SelectedAuthenticationIdentityStores.* или \w{5,}.*

const regex = /SelectedAuthenticationIdentityStores.*/g;
const text = `Step=10 , Step=11 , Step=12 , Step=13 , Step=14 , Step=15 , Step=16 , Step=18 , Step=17 , Step=20 , Step=19 , Step=25 , Step=21 , Step=26 , Step=28 , Step=24 , Step=22 , Step=23 , Step=27 , Step=30 , Step=29 , Step=35 , Step=34 , Step=32 , Step=31 , Step=38 , Step=37 , Step=36 , Step=50 , Step=45 , Step=48 , Step=41 , Step=52 , Step=42 , Step=57 , Step=65 , Step=61 , Step=62 , Step=64 , Step=54 , Step=53 , Step=59 , Step=63 , Step=84 , Step=71 , SelectedAuthenticationIdentityStores=paddedvalue, NetworkDeviceName=exampledevice, NetworkDeviceGroups=Update Source:All Sources:ACS, NetworkDeviceGroups=Device Type:All Device Types:Wireless, NetworkDeviceGroups=Location:All Locations, ServiceSelectionMatchedRule=Rule-1, IdentityPolicyMatchedRule=Default`
console.log(text.match(regex))
...