我有以下文字
TABLES:
TABLE1: COLUMN1;
TABLE2: COLUMN_A;
TABLE3(TABLE1, TABLE2): COLUMN_1, COLUMN_2;
ENDTABLES
首先,我希望得到TABLES - ENDTABLES
和我之间的内容:
var text = "all of the above";
var tablesRegex = /TABLES\:([\s\S]*?)ENDTABLES/;
alert(tablesRegex.exec(text)[1]);
但后来我想把它放在一个数组中:
["TABLE1: COLUMN1","TABLE2: COLUMN_A","TABLE3(TABLE1, TABLE2): COLUMN_1, COLUMN_2"]
我找到this,但坦率地说我不明白。
有关如何获取该阵列的任何帮助吗?
由于
更新
虽然我可以使用以下方法拆分匹配字符串:
tablesRegex.exec(text)[1].split(";");
我实际上正在寻找正则表达式解决方案(如果可能)
更新2
新的正则表达式...而不是/TABLES\:([\s\S]*?)ENDTABLES/
,以获取没有分号的字符串内的内容
答案 0 :(得分:1)
您声明您正在寻找正则表达式解决方案......
var results = str.match(/\bTABLE\d[^;]+/g)
console.log(results)
var str = '\
TABLES: \
TABLE1: COLUMN1; \
TABLE2: COLUMN_A; \
TABLE3(TABLE1, TABLE2): COLUMN_1, COLUMN_2; \
ENDTABLES';
var results = str.match(/\bTABLE\d[^;]+/g)
document.getElementById('foo').innerHTML =
'<ul><li>' +
results.join('</li><li>') +
'</li></ul>';
&#13;
<div id="foo"></div>
&#13;
答案 1 :(得分:0)
我认为您可以使用;
var tablesRegex = /TABLES\:([\s\S]*?)ENDTABLES/;
var x = tablesRegex.exec(text)[1];
var array = x.split(/\s*;\s*/)
答案 2 :(得分:0)
试试这个:
function splitWeirdTables(str){
return str.replace(/^TABLES\:(.+)ENDTABELS$/, '$1').split(/;/);
}
console.log(splitWeirdTables(yourStringHere));