正则表达式:从匹配中删除模式

3

尝试寻找答案但没有成功。

那么,假设我有一个字符串

12/01/2014 22:13 1,600/1,800 *or*
12/01/2014 22:13 100/200 *or*
12/01/2014 22:13 1,600/1,800 A *or*
12/01/2014 22:13 1600/1800 A

我需要获取/1,800 或 /200 或 /1,800 或 /1800。
/(\d{1,3},)*\d+.?(\d{1,8}|)

这给了我2个匹配项:例如 /1,800 和 /01/2014

我已经找到了排除日期的模式:

(?!(0?[1-9]|1[012])([-/.])(0?[1-9]|[12][0-9]|3[01])([-/.])(19|20)\d\d)

但是我不知道如何将这两者结合起来。
2个回答

2
.*(\/\S+)

这个简单的正则表达式应该适用于你。

查看演示


1
你可以尝试以下正则表达式,仅匹配/1,800/200/1,800/1800
\/(?:\d,\d{3}|\d{3,4})\b(?=[^\d]*$)

DEMO

OR

的翻译是:

或者

\/(?:\d,\d{3}|\d{3,4})\b(?! \d)

演示

(?! \d) 这个负向先行断言断言数字后面不能跟着 <空格> 和数字。所以这个匹配 /01/2014 应该失败,因为它后面跟着一个空格和数字。


非常感谢!因为这个问题我浪费了好几个小时。 - big.tuna
忘记了另一种情况 :( 例如可能是/50。您能否也为我解决这个问题?再次感谢您!也许我找到了:/(?:\d,\d {3} | \ d {2,4}(?!/))\ b(?!\ d) - big.tuna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接