繁体   English   中英

我如何通过正则表达式捕获单词

[英]How can I capture word by Regex

我想从字符串中捕获数组键。

这是我的话: message[0][generic][0][elements][0][default_action][url]...

我想在message[0][generic][0][elements][0]之后捕获数组键,预期的结果是default_actionurl等。

我尝试了以下模式,但没有用。

  1. message\\[0\\]\\[generic\\]\\[0\\]\\[elements\\]\\[0\\](?=\\[(\\w+)\\]) :仅捕获default_action
  2. \\[(\\w+)\\] :它捕获所有数组键,但包含0genericelements ...

JavaScript是否有任何使结果数组逆的正则表达式模式,例如[url, default_action]

您可以替换字符串中不需要的部分,然后获取所有其他键。

 var string = 'message[0][generic][0][elements][0][default_action][url][imthird]'; var regexp = /message\\[0\\]\\[generic\\]\\[0\\]\\[elements\\]\\[0\\]/ var answer = string.replace(regexp,'').match(/[^\\[\\]]+/g) console.log(answer); 

使用String.prototype.split()Array.prototype.slice()的解决方案具有以下功能:

 var s = 'message[0][generic][0][elements][0][default_action][url]...', result = s.split(/\\]\\[|[\\[\\]]/g).slice(-3,-1); console.log(result); 

要提取任意数量的键并反转结果数组中元素的顺序:

 str = "message[0][generic][0][elements][0][default_action][url]"; res = str.match(/\\[([^\\d\\]]+)\\](?=\\[[^\\d\\]]*\\]|$)/g) .map(function(s) { return s.replace(/[\\[\\]]/g, "") }) .reverse(); console.log(res); 

暂无
暂无

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

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