【发布时间】:2017-07-05 02:44:52
【问题描述】:
尝试从一串模式中提取数字:
<Some Alphanumeric> <numbers> X <numbers> <Some Alphanumeric>
例如
I 00 Crazy 060 X 0140 08 Dance 47
应该提取数字060和0140以及文本I 00 Crazy和08 Dance 47
我正在使用以下正则表达式:
(.*)(\d{1,3})\s*(x|X)\s*(\d{1,4})(.*)
但是,这不适用于 X 之前的第一个数字,它仅捕获 0 而不是 060,但正确捕获了第二个数字 0140。
\d{1,3} 应该是对长度在 1 到 3 之间的数字的贪婪捕获 - 那么我在这里缺少什么?
【问题讨论】:
-
你需要对第一组进行惰性匹配 -
(.*?)(\d{1,3})\s*([xX])\s*(\d{1,4})(.*)