C# 使用正则表达式仅在第一个分隔符处断开字符串
我正在提取一个字符串,其中包含以下格式的信息:C# 使用正则表达式仅在第一个分隔符处断开字符串,c#,regex,C#,Regex,我正在提取一个字符串,其中包含以下格式的信息: Name: ABC Enterprises Address: 1234 Somewhere Ln Service Request: They want something done. 我需要提取数据标签及其相关数据,因此我使用了regex模式(.+):(.+),并取得了一些成功(数据标签在组1中,相关数据在组2中)。但是,在我扩展范围时,如果“服务请求”中有“:”字符,则正则表达式将失败,因为第一个组将捕获从行首到行尾的所有内容。有没有办法更改我
Name: ABC Enterprises
Address: 1234 Somewhere Ln
Service Request: They want something done.
我需要提取数据标签及其相关数据,因此我使用了regex模式(.+):(.+)
,并取得了一些成功(数据标签在组1中,相关数据在组2中)。但是,在我扩展范围时,如果“服务请求”中有“:”字符,则正则表达式将失败,因为第一个组将捕获从行首到行尾的所有内容。有没有办法更改我的正则表达式,为第一个“:”而不是最后一个创建分组分隔符?谢谢。使用:(.+?):(.+)
为了获得更好的性能,请使用独占匹配:([^:::+):(.+)
使用:(.+?):(.+)
为了获得更好的性能,请使用排他匹配:
([^::]+):(.+)
使用排除类以确保第一个组中没有':'
([^:]+): (.*)
使用排除类确保第一个组中没有
:'
([^:]+): (.*)
我将添加锚点(使用多行选项)并使用以下正则表达式:
^([^:]+):[ \t]*(.*)$
我将添加锚点(使用多行选项)并使用此正则表达式:
^([^:]+):[ \t]*(.*)$
您也不能使用正则表达式。只需使用String.indexOf()获取第一个“:”的位置,并使用String.substring()将每一行与String.indexOf()中的值分开。您也不能使用正则表达式。只需使用String.indexOf()获取第一个“:”的位置,并使用String.substring()将每一行与String.indexOf()中的值分开。