我正在嘗試構建一個正則運算式來將 openldap 日志劃分為不同的正則運算式組
日志:
620da112 conn=2871219 op=1 SRCH attr=extensionAttribute6
620da112 conn=2871220 fd=60 ACCEPT from IP=10.17.28.159:35708 (IP=0.0.0.0:19000)
620da112 conn=2871219 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
620da112 conn=2871219 op=2 UNBIND
620da112 conn=2871219 fd=52 closed
620da112 conn=2871220 fd=60 TLS established tls_ssf=256 ssf=256
620da112 conn=2871220 op=0 BIND dn="cn=admin,dc=ClinicalPortal" method=128
我需要創建一個正則運算式,我需要將每個正則運算式劃分為一個組,以便我可以將其分配給一個變數,然后將操作后的剩余部分(UNBIND,關閉,TLS建立,BIND ...)分配給不同的變數(例如:tag=101 err=0 nentries=1 text= 到 diff 變數)到目前為止,我已經嘗試了以下正則運算式,但它不適用于所有行,甚至它沒有給出最后的值(例如: tag=101 err=0 nentries=1 text= 到 diff 變數)作為單個組運算式:
function printMatch(line){
const matchings = myRe.exec(line);
console.log("Line --START");
if(matchings !=null){
for(var i=0;i<matchings.length;i ){
console.log("Group " i ":" matchings[i]);
}
} else {
console.log("Line " line " do not match the REGEX");
}
console.log("Line --END");
}
const myRe = /^([A-Za-z[0-9]{8})\s([=A-Za-z[0-9]*)\s([=A-Za-z[0-9]*)\s([A-Z\s{1}]*)/g;
printMatch('620da112 conn=2871219 op=1 SRCH attr=extensionAttribute6');
printMatch('620da112 conn=2871220 fd=60 ACCEPT from IP=10.17.28.159:35708 (IP=0.0.0.0:19000)');
printMatch('620da112 conn=2871219 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=');
printMatch('620da112 conn=2871219 op=2 UNBIND');
printMatch('620da112 conn=2871220 fd=60 TLS established tls_ssf=256 ssf=256');
printMatch('620da112 conn=2871220 op=0 BIND dn="cn=admin,dc=ClinicalPortal" method=128');
uj5u.com熱心網友回復:
“OP 是否正在尋找與此類似的標記化?..
/^(?<id>[a-zA-Z0-9]{8})\s (?<conn>\w =\S )\s (?<op>\w =\S )\s (?<cmd>.*?)\s*(?<rest>\w =.*)?$/gm– Peter Seliger“像魅力一樣作業!!!您能否回答這個問題,而不是發表評論愿意接受它作為答案。” - 探路者
const multilineSample = `620da112 conn=2871219 op=1 SRCH attr=extensionAttribute6
620da112 conn=2871220 fd=60 ACCEPT from IP=10.17.28.159:35708 (IP=0.0.0.0:19000)
620da112 conn=2871219 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
620da112 conn=2871219 op=2 UNBIND
620da112 conn=2871219 fd=52 closed
620da112 conn=2871220 fd=60 TLS established tls_ssf=256 ssf=256
620da112 conn=2871220 op=0 BIND dn="cn=admin,dc=ClinicalPortal" method=128`;
const regXNamedTokens =
// see ... [https://regex101.com/r/k9mUPP/1]
/^(?<id>[a-zA-Z0-9]{8})\s (?<conn>\w =\S )\s (?<op>\w =\S )\s (?<cmd>.*?)\s*(?<rest>\w =.*)?$/gm;
console.log(
'all match results ...',
Array.from(
multilineSample.matchAll(regXNamedTokens)
)
);
console.log(
'all results each with its mapped named capture group ...',
Array.from(
multilineSample.matchAll(regXNamedTokens)
)
.map(({ groups }) => groups)
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429524.html
標籤:javascript 正则表达式 弹性搜索 标记化 开放式LDAP
上一篇:在谷歌模擬中執行呼叫函式的順序
