C#贪婪正则表达式包括匹配文本

C# greedy regular expression including match text

我目前有字符串:

"CL,UP_REMOVE_LINE,#global_session_id,arg_stage=false,arg_project_id=-1,#global_line_id,arg_activity_id=-1,arg_mode=1,arg_line_id=#global_line_id,arg_session_id=-1"

我试过:

splitty = Regex.Split(lineText,@"[\,]+\s*(?>arg_){1}?");

并收到:

{string[7]}
    [0]: "CL,UP_REMOVE_LINE,#global_session_id"
    [1]: "stage=false"
    [2]: "project_id=-1,#global_line_id"
    [3]: "activity_id=-1"
    [4]: "mode=1"
    [5]: "line_id=#global_line_id"
    [6]: "session_id=-1"

我用至少一个逗号分隔,然后是任意白色 space,然后是 "arg_" 定界符,但是有没有办法保持 "arg_" 部分完整,即指标 [1-6]?

使用正向前瞻(检查是否存在但不消耗,从而将其留在拆分块中)而不是原子组(仍然被消耗,因此在使用时被删除 Split ):

,+\s*(?=arg_)

regex demo

请注意,您不需要将逗号放入字符 class,也不需要转义逗号。

此外,{1}? = {1} 完全多余(您可以随时删除它,因为此 {1} 始终是隐含的(即 abc = a{1}b{1}c{1})).