繁体   English   中英

正则表达式:删除字符串的左侧,直到特殊字符

[英]REGEX: remove left of string until special character

给定以下值ora:hashedPassword我想要一个正则表达式来删除整个左侧字符串,直到:所以留下hashedPassword

我目前正在执行以下操作,但只接受一个值来替换,在我当前的场景中,数组值可以包含多个字符串模式(ora:value1, org:value2,pfog1r0:value2)

 var schemaArr = ['ora:hashedPassword', 'org:DISTRIB_VALUES_OTH', 'org:categoryTrackingLogStats', 'org:champsPersoAutres', 'org:champsPersoBoutique', 'org:deliveryDOLogStats', 'org:ebNotif', 'org:familleTypologie', 'org:filActuNewBox', 'org:lovDevice', 'org:newBoxNotif', 'org:potentielFibre', 'org:tempsSaison', 'pfog1r0:BRIEF_DELIVERY', 'pfog1r0:BRIEF_DELIVERY_DO', 'pfog1r0:BRIEF_DELIVERY_OFFER_RANGE', 'pfog1r0:BRIEF_DELIVERY_TARGET', 'pfog1r0:BRIEF_DELIVERY_TARGET_DO', 'pfog1r0:BRIEF_DELIVERY_TGT_OFRG', 'pfog1r0:OPERATION_PRT_WAVES', 'pfog1r0:OPERATION_TMK_SUPPLIER']; var arrayLength = schemaArr.length; for (var i = 0; i < arrayLength; i++) { console.log(schemaArr[i], "auto_" + schemaArr[i].replace("org:", '') + "_seq") }

替换冒号前的所有字符的正则表达式可以像/.*?:/这样简单

 var schemaArr = ['ora:hashedPassword', 'org:DISTRIB_VALUES_OTH', 'org:categoryTrackingLogStats', 'org:champsPersoAutres', 'org:champsPersoBoutique', 'org:deliveryDOLogStats', 'org:ebNotif', 'org:familleTypologie', 'org:filActuNewBox', 'org:lovDevice', 'org:newBoxNotif', 'org:potentielFibre', 'org:tempsSaison', 'pfog1r0:BRIEF_DELIVERY', 'pfog1r0:BRIEF_DELIVERY_DO', 'pfog1r0:BRIEF_DELIVERY_OFFER_RANGE', 'pfog1r0:BRIEF_DELIVERY_TARGET', 'pfog1r0:BRIEF_DELIVERY_TARGET_DO', 'pfog1r0:BRIEF_DELIVERY_TGT_OFRG', 'pfog1r0:OPERATION_PRT_WAVES', 'pfog1r0:OPERATION_TMK_SUPPLIER']; var arrayLength = schemaArr.length; for (var i = 0; i < arrayLength; i++) { console.log(schemaArr[i], "auto_" + schemaArr[i].replace(/.*?:/, '') + "_seq") }

您可以使用 match 和(?<=:) lookbehind方法来查找以下文本:

 var schemaArr = ['ora:hashedPassword', 'org:DISTRIB_VALUES_OTH', 'org:categoryTrackingLogStats', 'org:champsPersoAutres', 'org:champsPersoBoutique', 'org:deliveryDOLogStats', 'org:ebNotif', 'org:familleTypologie', 'org:filActuNewBox', 'org:lovDevice', 'org:newBoxNotif', 'org:potentielFibre', 'org:tempsSaison', 'pfog1r0:BRIEF_DELIVERY', 'pfog1r0:BRIEF_DELIVERY_DO', 'pfog1r0:BRIEF_DELIVERY_OFFER_RANGE', 'pfog1r0:BRIEF_DELIVERY_TARGET', 'pfog1r0:BRIEF_DELIVERY_TARGET_DO', 'pfog1r0:BRIEF_DELIVERY_TGT_OFRG', 'pfog1r0:OPERATION_PRT_WAVES', 'pfog1r0:OPERATION_TMK_SUPPLIER']; const result = schemaArr.map(i => i.match(/(?<=:)\w+/)[0]) console.log(result)

所以正则表达式很短: /.+:/

  • .+ - 一个或多个字符
  • :后跟一个冒号

有几种方法可以遍历这些字符串,具体取决于您是要改变现有数组还是创建一个新的已更改元素数组。

  1. 改变现有数组

 const schemaArr = ['ora:hashedPassword', 'org:DISTRIB_VALUES_OTH', 'org:categoryTrackingLogStats', 'org:champsPersoAutres', 'org:champsPersoBoutique', 'org:deliveryDOLogStats', 'org:ebNotif', 'org:familleTypologie', 'org:filActuNewBox', 'org:lovDevice', 'org:newBoxNotif', 'org:potentielFibre', 'org:tempsSaison', 'pfog1r0:BRIEF_DELIVERY', 'pfog1r0:BRIEF_DELIVERY_DO', 'pfog1r0:BRIEF_DELIVERY_OFFER_RANGE', 'pfog1r0:BRIEF_DELIVERY_TARGET', 'pfog1r0:BRIEF_DELIVERY_TARGET_DO', 'pfog1r0:BRIEF_DELIVERY_TGT_OFRG', 'pfog1r0:OPERATION_PRT_WAVES', 'pfog1r0:OPERATION_TMK_SUPPLIER']; for (let i = 0; i < schemaArr.length; i++) { schemaArr[i] = schemaArr[i].replace(/.+:/, ''); } console.log(schemaArr);

  1. 使用map创建一个新的更新数组以迭代每个元素并将更改的元素返回到 output 数组。

 const schemaArr = ['ora:hashedPassword', 'org:DISTRIB_VALUES_OTH', 'org:categoryTrackingLogStats', 'org:champsPersoAutres', 'org:champsPersoBoutique', 'org:deliveryDOLogStats', 'org:ebNotif', 'org:familleTypologie', 'org:filActuNewBox', 'org:lovDevice', 'org:newBoxNotif', 'org:potentielFibre', 'org:tempsSaison', 'pfog1r0:BRIEF_DELIVERY', 'pfog1r0:BRIEF_DELIVERY_DO', 'pfog1r0:BRIEF_DELIVERY_OFFER_RANGE', 'pfog1r0:BRIEF_DELIVERY_TARGET', 'pfog1r0:BRIEF_DELIVERY_TARGET_DO', 'pfog1r0:BRIEF_DELIVERY_TGT_OFRG', 'pfog1r0:OPERATION_PRT_WAVES', 'pfog1r0:OPERATION_TMK_SUPPLIER']; const updated = schemaArr.map(el => { return el.replace(/.+:/, ''); }); console.log(updated);

另一种方法(如评论中所述)可能是仅split冒号上的字符串以创建一个数组,然后返回第二个元素

 const schemaArr = ['ora:hashedPassword', 'org:DISTRIB_VALUES_OTH', 'org:categoryTrackingLogStats', 'org:champsPersoAutres', 'org:champsPersoBoutique', 'org:deliveryDOLogStats', 'org:ebNotif', 'org:familleTypologie', 'org:filActuNewBox', 'org:lovDevice', 'org:newBoxNotif', 'org:potentielFibre', 'org:tempsSaison', 'pfog1r0:BRIEF_DELIVERY', 'pfog1r0:BRIEF_DELIVERY_DO', 'pfog1r0:BRIEF_DELIVERY_OFFER_RANGE', 'pfog1r0:BRIEF_DELIVERY_TARGET', 'pfog1r0:BRIEF_DELIVERY_TARGET_DO', 'pfog1r0:BRIEF_DELIVERY_TGT_OFRG', 'pfog1r0:OPERATION_PRT_WAVES', 'pfog1r0:OPERATION_TMK_SUPPLIER']; const updated = schemaArr.map(el => { return el.split(':')[1]; }); console.log(updated);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM