我已经在我的JS项目中使用Regex进行了几个小时的研究。我遇到了一个尝试在'标签'之间获取字符串的问题。我现在唯一的问题是我在标签中使用的字符。
字符串我在看:
[](/TABLE_1)
##Table 1
Header 1|Header 2|Header 3
:-:|:-:|:-:
Value 1|Value 2|Value 3
Value 1|Value 2|Value 3
[](/END_TABLE_1)
[](/TABLE_2)
##Table 2
Header 1|Header 2|Header 3
:-:|:-:|:-:
Value 1|Value 2|Value 3
Value 1|Value 2|Value 3
[](/END_TABLE_2)
[](/TABLE_3)
##Table 3
Header 1|Header 2|Header 3
:-:|:-:|:-:
Value 1|Value 2|Value 3
Value 1|Value 2|Value 3
[](/END_TABLE_3)
我正在尝试获取
中的字符串[](/TABLE_1)
和
[](/TABLE_2)
目前,我正在尝试使用Regex表达式:
(?<=[](/TABLE_1))(.*)(?=[](/END_TABLE_1))
我注意到我的无法更改的标签无法在其中被检测到。
答案 0 :(得分:0)
您必须转发()[]
因为它们在正则表达式中被识别为元字符,因此您不应在JavaScript中使用(?<=)(?=)
正面的后观点。
正则表达式:\[\]\(\/(TABLE_[12])\)\n([\S\s]+)\n\[\]\(\/END_\1\)
var text = `[](/TABLE_1)
##Table 1
Header 1|Header 2|Header 3
:-:|:-:|:-:
Value 1|Value 2|Value 3
Value 1|Value 2|Value 3
[](/END_TABLE_1)
[](/TABLE_2)
##Table 2
Header 1|Header 2|Header 3
:-:|:-:|:-:
Value 1|Value 2|Value 3
Value 1|Value 2|Value 3
[](/END_TABLE_2)
[](/TABLE_3)
##Table 3
Header 1|Header 2|Header 3
:-:|:-:|:-:
Value 1|Value 2|Value 3
Value 1|Value 2|Value 3
[](/END_TABLE_3)`;
var re = /\[\]\(\/(TABLE_[12])\)\n([\S\s]+)\n\[\]\(\/END_\1\)/g;
var m;
do {
m = re.exec(text);
if (m) {
console.log(m[2]);
}
} while (m);