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_)
请注意,您不需要将逗号放入字符 class,也不需要转义逗号。
此外,{1}?
= {1}
完全多余(您可以随时删除它,因为此 {1}
始终是隐含的(即 abc
= a{1}b{1}c{1}
)).
我目前有字符串:
"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_)
请注意,您不需要将逗号放入字符 class,也不需要转义逗号。
此外,{1}?
= {1}
完全多余(您可以随时删除它,因为此 {1}
始终是隐含的(即 abc
= a{1}b{1}c{1}
)).