使用正则表达式仅在第一个定界符处中断字符串

时间:2018-07-08 01:21:26

标签: c# regex

我正在提取一个字符串,该字符串具有以下格式的信息:

Name: ABC Enterprises
Address: 1234 Somewhere Ln
Service Request: They want something done.

我需要提取数据标签及其关联的数据,因此我成功使用了正则表达式模式(.+):(.+)(组1中的数据标签和组2中的相关数据)。但是,随着范围的扩大,如果“服务请求”中包含“:”字符,则正则表达式将失败,因为第一个组将捕获从行首到行中最后一个“:”的所有内容。线。有没有办法改变我的正则表达式表达式以创建FIRST':'而不是最后一个的分组中断?谢谢。

3 个答案:

答案 0 :(得分:1)

使用reluctant/lazy quantifier(.+?):(.+)

为获得更好的性能,请使用排他匹配:([^:]+):(.+)

答案 1 :(得分:1)

使用排除类来确保第一组中没有':'

([^:]+): (.*)

答案 2 :(得分:1)

我将添加锚点(使用多行选项)并使用此正则表达式:

^([^:]+):[ \t]*(.*)$

Demo and explanation