Javascript 多行上的多个匹配项
我有这些数据,实际上是一个降价表:Javascript 多行上的多个匹配项,javascript,c#,regex,Javascript,C#,Regex,我有这些数据,实际上是一个降价表: blah blah blah | Tables | Are | Cool | | ------------- |:-------------:| -----:| | col 3 is | right-aligned | $1600 | | col 2 is | centered | $12 | | zebra stripes | are neat | $1 | blah bl
blah blah blah
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
blah blah
blah
我想做一个正则表达式匹配,得到管道之间的值
理想情况下,我希望每一行都有一个组,然后每个“单元”都有一个子组
更理想的情况是,我希望确保每行中有相同数量的单元格/列
我的尝试要么与行/表中的最后一个单元格匹配,要么与每秒钟一个单元格匹配。这完全是爆炸:
\\\\\\\(?:([^\r\n\\\\\]*)\\+\r?\n\\\\(?:(\:?-+\:?)\\\\\)+\r?\n(\\\\\([^\r\n\\\\\]*)\\\\\\\+\r?\n)+
这也相当令人沮丧:^#(?:([^#]+)#)+$
正在用javascript或C#寻找解决方案。我会用js来处理类似的问题,但前提是您不需要正则表达式来处理其他问题;-)
var-yourStr
var groups=yourStr.split('\n')
var cells=yourStr.split(“|”)
如果(cells.length
试试看
var input=document.querySelectorAll(“pre”)[0]。innerText;
var output=input.match(/\s+\w+-\w+\w+\w+\d+\d+/gi)
.map(函数(word,i){
返回单词。替换(/\\| |\s |--+|\s-\s+|:/gi,”)
});
document.body.insertBefore(
document.createTextNode(output.join(“”)
,document.getElementsByTagName(“hr”)[0]
);代码>
废话废话
|桌子很酷|
| ------------- |:-------------:| -----:|
|第3列为“右对齐”| 1600美元|
|第2列为|居中| 12美元|
|斑马条纹很整齐| 1美元|
废话
废话
输入是单个字符串吗?
var yourStr
var groups = yourStr.split('\n')
var cells = yourStr.split('|')
if (cells.length < asItShouldBe) { ... }
var cell1 = cells[1]
var cell2 = cells[2]
...