正则表达式 - 提取具有特定模式的子字符串
本文关键字:模式 字符串 提取 正则表达式 | 更新日期: 2023-09-27 18:32:45
我有一个大字符串,如下所示:
99/34 12/34此文本是 22.67 22/23 33/34 第二个文本是这样的 22.67 55/66 45/54 第三条文字是 32.27
等等。我正在尝试形成一个正则表达式来提取所有以"两位数、斜杠、两位数、一个空格、两位数、斜杠、两位数、任何字符任意重复次数,一 .文字和两位数"来自大字符串。
我尝试的正则表达式是'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/3412/34 此文本是 22.67
22/2333/34 第二个文本就像是 22.67
55/66 45/54 第三篇文字是 32.27
我该怎么做?我正在使用 C# (.NET 4.5)
问题在于贪婪的.*
它会尝试匹配尽可能多的字符,同时仍然提供匹配。
您可以简单地修改您的正则表达式
'd{2}/'d{2}'s.*?'d{2}'.'d{2}
*
之后的?
使其不贪婪,只消耗(吃)尽可能少的字符以找到匹配。
请注意,我还将's{1}
更改为's
,因为它是一个字符,以限定它开头,因为恰好是一个字符,除了混淆模式之外什么都不做。