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

时间:2016-08-08 21:56:25

标签: c# .net regex regex-greedy

我目前有字符串:

"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"

我正在分裂至少一个逗号,然后是任意空格,后跟“arg_”分隔符,但有没有办法保持“arg_”部分完整,即指示[1-6]?

1 个答案:

答案 0 :(得分:1)

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

,+\s*(?=arg_)

请参阅regex demo

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

enter image description here

另外,{1}? = {1}并且完全是多余的(您可以随时将其删除,因为{1}总是隐含的(即abc = a{1}b{1}c{1}) )。

相关问题