我有一个大字符串,如下所示:
99/34 12/34本文是22.67 22/23 33/34第二个文字就像是 22.67 55/66 45/54第三个文字就像是32.27
等等。我试图形成一个正则表达式来提取所有以&#34开头的子串;两个数字,斜杠,两个数字,一个空格,两个数字,斜线,两个数字,任意字符任意数量的重复,一个。字面和两位数"从大字符串。
我试过的正则表达式是\d{2}/\d{2}\s{1}.*\.\d{2}
。但是,这将返回单个字符串" 99/34 12/34此文本为22.67 22/23 33/34第二个文本就像是22.67 55/66 45/54第三个文本就像是32.27" 。我希望将其提取为
99/34 12/34本文为22.67
22/23 33/34第二个文字就像是22.67
55/66 45/54第三个文字就像是32.27
我该怎么做?我正在使用C#(.NET 4.5)
答案 0 :(得分:2)
问题在于贪婪的.*
它会尽可能多地匹配同时仍然匹配的字符。
你可以简单地修改你的正则表达式
\d{2}/\d{2}\s.*?\d{2}\.\d{2}
?
之后的*
使其不贪婪,只消耗(吃掉)尽可能少的字符才能找到匹配项。
请注意,我还将\s{1}
更改为\s
,因为它是一个单一的字符,从一个限定条件开始,因为除了混淆模式之外什么都不做。