Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
C# Confluence wiki标记-使用正则表达式确定表行类型_C#_Regex_Confluence_Wiki Markup - Fatal编程技术网

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();