I am using Kusto query language and my sample data is:
LoginGetWalletSuccess
LoginGetWalletFailed
FirstTimeLoginSuccess
FirstTimeLoginFailed
LoginBySalesforceSuccess
LoginBySalesforceFailed
and the regex I came up is:
(?:Login)(. )(?:Success|Failed)
I am having this result with the regex above:
GetWallet
FirstTimeLoginSuccess
FirstTimeLoginFailed
BySalesforce
BySalesforce
But I would like to have as a result the following:
GetWallet
FirstTime
FirstTime
BySalesforce
BySalesforce
CodePudding user response:
Add Login to the trailing match and make the match reluctant (by added a ?):
(?:Login)?(. ?)(?:Success|Failed|Login)
See live demo.
CodePudding user response:
Option 1.
That would be the most generic solution, agnostics to the number of words and their order.
datatable (txt:string)
[
"LoginGetWalletSuccess"
,"LoginGetWalletFailed"
,"FirstTimeLoginSuccess"
,"FirstTimeLoginFailed"
,"LoginBySalesforceSuccess"
,"LoginBySalesforceFailed"
]
| extend replace_regex(txt, "Login|Success|Failed", "")
| txt | Column1 |
|---|---|
| LoginGetWalletSuccess | GetWallet |
| LoginGetWalletFailed | GetWallet |
| FirstTimeLoginSuccess | FirstTime |
| FirstTimeLoginFailed | FirstTime |
| LoginBySalesforceSuccess | BySalesforce |
| LoginBySalesforceFailed | BySalesforce |
Option 2.
Assuming you are searching for a single, continues expression
datatable (txt:string)
[
"LoginGetWalletSuccess"
,"LoginGetWalletFailed"
,"FirstTimeLoginSuccess"
,"FirstTimeLoginFailed"
,"LoginBySalesforceSuccess"
,"LoginBySalesforceFailed"
]
| extend trim("Login|Success|Failed", txt)
| txt | Column1 |
|---|---|
| LoginGetWalletSuccess | GetWallet |
| LoginGetWalletFailed | GetWallet |
| FirstTimeLoginSuccess | FirstTime |
| FirstTimeLoginFailed | FirstTime |
| LoginBySalesforceSuccess | BySalesforce |
| LoginBySalesforceFailed | BySalesforce |
