Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多行上的多个匹配项_Javascript_C#_Regex - Fatal编程技术网

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]
...