匹配和排除的正则表达式

时间:2019-02-19 23:12:34

标签: regex

我一直在抓取页面以编译列表以比较价格和尺寸。我一直只使用widthxlength,不包括height。但是,有些测量值会随高度而变化,有时还会加上小数,例如:

5.0x10.0x8.0

10.0x10.0x9.0

10.0x15.0x9.0

10.0x20.0x9.0

我正在尝试排除.0和最后一个尺寸。最终只能得到:

5x10 10x10 10x15 10x20

我已经使用\d+[ ][X][ ]\d+(\d+'x\d+')来解决类似的问题,但是我很难找到一种破解方法。

1 个答案:

答案 0 :(得分:0)

您可以匹配整个字符串,捕获宽度和长度的整数部分,然后替换为两个捕获组。匹配

(\d+)\.\d+x(\d+)\.\d+(?:x\d+\.\d+)?

并替换为

$1x$2

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

如果小数部分可能不存在,则将模式中的每个小数部分放入可选的非捕获组:

(\d+)(?:\.\d+)?x(\d+)(?:\.\d+)?(?:x\d+(?:\.\d+)?)?

https://regex101.com/r/BOkRx6/4