Reputation: 57
I am trying to parse the log file below; however I am a bit stuck on figuring out how to match the results after all the "Step=Number".
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
I was thinking about matching after the combination of: \d\s\,\s
The ideal goal is to match the following:
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
I tried the following regex: \d\s\\,\s(.*)
but that matches everything after the first Step=Number (Step=10)
Upvotes: 3
Views: 88
Reputation: 106588
You can use another .* in the beginning of your existing pattern to greedily consume all but the last possible match:
.*\d\s,\s(.*)
Demo: https://regex101.com/r/Oc7jUK/1
Alternatively, you can use a positive lookbehind pattern to ensure that the match is preceded by a \d\s,\s
, and a negative lookahead pattern to ensure that there's no more \d\s,\s
that follows:
(?<=\d\s,\s)(?!.*\d\s,\s).*
Demo: https://regex101.com/r/Oc7jUK/2
Upvotes: 1
Reputation: 3721
why not using a regex that match all after SelectedAuthenticationIdentityStores
like SelectedAuthenticationIdentityStores.*
or \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))
Upvotes: 0