正则表达式随机数

时间:2016-08-09 19:17:40

标签: regex

好吧,我有这么多行:

Line 60166: £5.99
Line 60294: £59.99
Line 60493: £5.53
Line 60619: £5.19
Line 60829: £5.88
Line 60847: £5.18
Line 61508: £5.98
Line 61771: £5.27
Line 61777: £5.99
Line 61789: £5.49
Line 61893: £5.00
Line 61899: £5.49
Line 61940: £500.91

我想搜索一下只能说500英镑+ 那么有一个表达式可以搜索5英镑[AnyNum] [AnyNum]吗?我知道我可能以前做过但我忘了它是什么

4 个答案:

答案 0 :(得分:1)

你应该使用不同的方法来解析数字,但是下面的正则表达式应该做你想要的:

/£[5-9]\d{2,}|£[1-9]\d{3,}/g

DEMO

获取行号,而不是金额:

/(\d+): £[5-9]\d{2,}|(\d+): £[1-9]\d{3,}/g

DEMO2

匹配小数的版本:

/£[5-9]\d{2,}\.\d{2}|£[1-9]\d{3,}\.\d{2}/g

答案 1 :(得分:0)

是的,尝试使用[5-9]代表数字和[1-9]数千+数字:

/£0*([5-9]\d*|[1-9]\d+)\d{2}/g

答案 2 :(得分:0)

如果您需要超过500英镑的价值,包括12345.67英镑,您需要考虑两个案例:

数字介于500.00和999.99之间,数字是任意3+位数。这个正则表达式应该可行。

  /(\d+): £[5-9]\d{2,}|(\d+): £[1-9]\d{3,}/g

匹配点和小数部分使用:

 (£[5-9]\d{2,}|£[1-9]\d{3,})(\.)([0-9])([0-9])

这将获得£1000.000或£1000.00.00。下一个表达式检查价格的自然结束(空格或[.,;;'"],然后是空间)。这个正则表达式可能会遗漏一些字符串。例如,将排除£1000.00+之类的字符串。

 (£[5-9]\d{2,}|£[1-9]\d{3,})(\.)([0-9])([0-9])($| |[,.;':'"][ ])

https://regex101.com/r/wO7cZ2/3

如果您对某些误报有效,请使用第二个字符串。展开第三个字符串以处理假阳性,存在假阴性风险。

答案 3 :(得分:0)

这将为您提供包含'£'的所有小数的值(我假设小数是可选的):

£([5-9]\d{2,}|[1-9]\d{3,})(\.\d{1,})*

如果你不想要英镑符号:

(?<=£)([5-9]\d{2,}|[1-9]\d{3,})(\.\d{1,})*