[英]RegEx - Value inside double square brackets
我试图在Double Square括号中提取一个值: [[x]]
,而忽略单个方括号中的所有其他内容: [y]
。
注意: 此RegEx将在JavaScript中使用,据我所知,它不支持后视
例如,取这3个字符串
[[32]] [Test] Lorem Ipsum
[[16]] Lorem Ipsum
[[2]] Test [BUG]
我想提取: 32,16,2
这就是我尝试过的
测试1:
\\[([0-9]+)\\]
只会返回包含内方括号的值,例如[32],[16],[2] 。 然后我可以在结果上再做一次RegEx,但我想知道如何做一次。
测试2:
\\[.*?\\]]
将使用双方括号返回值,例如[[32]],[[16]],[[2]]
鉴于:
var s = '[[32]] [Test] Lorem Ipsum [[16]] Lorem Ipsum [[2]] Test [BUG]';
您可以使用匹配一个或多个数字后跟']]'但在匹配中不包含']]'的预测:
s.match(/\d+(?=\]\])/g) // ["32", "16", "2"]
或者,如果没有预测,您可以使用:
s.match(/\[\[(\d+)\]\]/g).map(function(v){return v.replace(/\[+|\]+/g,'');})
虽然如果地图可用,那么可能也是前瞻性的。 如果输入是多行的,您可能还需要m标志。
您可以使用捕获组来匹配模式中的子字符串。
在JavaScript中(括号在此定义捕获组):
var pattern = /\[\[([0-9]+)\]\]/g;
var string = "[[1]] [2] [[3]] [4] [[five]]";
var numbers = [];
while (match = pattern.exec(string)) {
numbers.push(match[1]); //Get capturing group 1. This would be e.g. "1"
// NOTE: match[0] contains the entire match. e.g. "[[1]]"
}
console.log(numbers)
控制台输出: ["1", "3"]
有关捕获组的更多信息,请参见http://www.regular-expressions.info/refcapture.html 。
你试过/\\[\\[([0-9]+)\\]\\]/
? 当然假设您只希望双方括号内的数字。
var exp = /\[\[([0-9]+)\]\]/;
var number = exp.exec("[[293]] Test line")[1]
number
应返回'293'
。
怎么样
\[{2}(\d+)\]{2}
告诉正则表达式你想要{2}
[
然后一些\\d
数字然后另一个{2}
]
let str = 'test [[1]], test [[2]], xyz, abc, <p>Hi</p> test [[3]].'
let result = str.match(/\[\[(\d+)\]\]/g).map((item) => {
return parseInt(item.replace(/[\[\]]/g, ''))
})
console.log(result)
使用纯正则表达式的另一种方法是使用外观。
(?<=\[\[)[0-9]+(?=\]\])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.