C# Confluence wiki标记-使用正则表达式确定表行类型
在中,有两种不同的表类型 所以我正在努力通过第一行来确定表的类型 (我通过检测带有如下正则表达式的新行来拆分行上的表:C# Confluence wiki标记-使用正则表达式确定表行类型,c#,regex,confluence,wiki-markup,C#,Regex,Confluence,Wiki Markup,在中,有两种不同的表类型 所以我正在努力通过第一行来确定表的类型 (我通过检测带有如下正则表达式的新行来拆分行上的表:newregex(@“(\\\(\r\n\\\r\124;\ n)(.*?\)+”),并使用匹配项进行拆分,但是) 表行可能如下所示: 如果它的标题 ||品目1 | |品目2 | |品目3|| 如果它是常规行 |A1室| A2室| A3室| 如果它的垂直表行 ||标题| B2单元| B3单元| 我试着使用这样的表达式^(\\\\\\..\\\\\\\\),但发现它也适用于标题 在
newregex(@“(\\\(\r\n\\\r\124;\ n)(.*?\)+”)
,并使用匹配项进行拆分,但是)
表行可能如下所示:
如果它的标题
||品目1 | |品目2 | |品目3||
如果它是常规行
|A1室| A2室| A3室|
如果它的垂直表行
||标题| B2单元| B3单元|
我试着使用这样的表达式^(\\\\\\..\\\\\\\\)
,但发现它也适用于标题
在我尝试使用这个^(\\\\\\\\..*?\\\\\\\\\\)
后,由于标题标记功能,但如果它是常规行,则没有帮助
那么,是否有可能通过使用Regex
来确定行类型,或者至少可以说是垂直行
或者最好编写一个逐步处理行的东西?编写它时不使用正则表达式,在javascript
中,看起来是这样的
简单字符串扫描器
var Scanner = (function(){
function Scanner(text){
this.currentString = text.split('');
this.position = 0;
this.errorList = [];
this.getChar = function(){
var me = this,
pos = me.position,
string = me.currentString,
stringLength = string.length;
if(pos < stringLength){
return string[pos];
}
return -1;
};
this.nextChar = function(){
var me = this,
pos = me.position,
string = me.currentString,
stringLength = string.length;
if(pos < stringLength){
me.position++;
return;
}
me.error("EOL reached");
};
this.error = function(errorMsg){
var me = this,
error = "Error at position " + me.position +"\nMessage: "+errorMsg+".\n";
errors = me.errorList;
errors.push[error];
};
return this;
};
return Scanner;
})();
用法:
var rowParser = new RowParser();
var row = "||AAA||BBB||CCC||\n|Hi|all|people!|";
rowParser.parseRow(row);
var result = rowParser.getRowData();
var TableCellType = {
info:{
Regular: 10,
Header: 20
},
data:[
{
id: 10,
name: "regular"
},
{
id: 20,
name: "header"
}
],
getValueById: function(id){
var me = this,
data = me.data,
result = data.filter(function(el){
return el.id === id;
});
return result[0];
}
}
var rowParser = new RowParser();
var row = "||AAA||BBB||CCC||\n|Hi|all|people!|";
rowParser.parseRow(row);
var result = rowParser.getRowData();