正则表达式用于查找货币值但不包括文本中的日期
我有类似以下两个示例字符串的文本
this book was sold for 12.00 on 12.12.2010 he paid 12.12.2010 , and puchased an amount of 15.00
从这些行我想捕获数量,但不是使用正则表达式捕获日期。
你可以用
\d+\.\d{2}(?![.\d])
如果您只需要准确区分这种格式的日期和这种格式的货币金额。
此正则表达式查找模式数字,点,两位数,但仅当它没有跟随另一个点或另一个数字时(以防止日期匹配)。
快速PowerShell测试:
以dd.mm.yy
格式更新短日期(以防您需要):
(?
试试这个
\b\d+\.\d{2}(?!\.?\d)
在Regexr上看到它
\b
是一个单词边界,这可以确保在第一个数字之前有一个非单词字符(也包括数字)。
\d+\.\d{2}
至少有一位数字,后跟一个点和另外两位数字。
(?!\.?\d)
是一个负面的向前看,确保没有数字或没有点后跟一个数字。 这将允许金额在句子的末尾。
使用c#代码:
String s = "this book was sold for 12.00 on 12.12.2010"; Regex r = new Regex(@"\b\d+\.\d{2}(?!\.?\d)"); Console.WriteLine(r.Matches(s)[0]); Console.ReadLine();
试试这个:
(?:\s|^)\d+\.\d+(?:\s|$)
它在我的测试中给出两个匹配:
12.00 15.00