仅在第一段中使用正则表达式捕获

时间:2014-12-16 16:36:10

标签: regex lookahead

我需要一个正则表达式来捕获仅在多段字符串的第一段中冒号之前的所有内容。

输入1:

  

Rochester:Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

     

Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris   nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。

     

Excepteur sint occaecat cupidatat non proident,sunt in culpa qui   官方deserunt mollit anim id est laborum

输出1:

  

罗切斯特

第一段中冒号前的所有内容。

输入2:

  

Rochester Hills:Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

     

Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris   nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。

     

Excepteur sint occaecat cupidatat non proident,sunt in culpa qui   官方deserunt mollit anim id est laborum

输出2:

  

罗切斯特山

第一段中冒号前的所有内容。

输入3:

  

Rochester Hills:Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

     

Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris   nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。

     

姐妹们:sint occaecat cupidatat non proident,sunt in culpa qui   官方deserunt mollit anim id est laborum

输出3:

  

罗切斯特山

仅在第一段中冒号前面的那个,完全忽略后一段中冒号前面的字符串。

输入4:

  

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

     

Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris   nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。

     

姐妹们:sint occaecat cupidatat non proident,sunt in culpa qui   官方deserunt mollit anim id est laborum

输出4:由于冒号没有出现在第一段中,因此不应捕获任何内容。

谢谢!

编辑:对不起,我忘记了以前的努力。我一直在与:

(?=.*:[ ]).*?(?=[:][ ])

这适用于冒号永远不会出现在后面段落中的另一个实例。但对于这种情况,我不明白我怎么能修改它只能在第一段内看。

1 个答案:

答案 0 :(得分:1)

这应该会得到你期望的结果......

^[^\n\r]+(?=:)

从任何数量的任何内容开始,直到新行/返回后跟冒号。经过测试,可以为您的所有示例提供所需的结果