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

时间:2017-07-01 04:50:22

标签: javascript 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 ...
  3. 是否有任何JavaScript的正则表达式模式使结果数组反转,如[url, default_action]

3 个答案:

答案 0 :(得分:1)

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

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);

答案 1 :(得分:0)

使用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);

答案 2 :(得分:0)

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



<!-- https://mvnrepository.com/artifact/com.databricks/spark-csv_2.11 -->
<dependency>
    <groupId>com.databricks</groupId>
    <artifactId>spark-csv_2.11</artifactId>
    <version>1.0.3</version>
</dependency>
&#13;
&#13;
&#13;