尝试删除遵循该模式的字符串
标签以
开头Size:
,并且在下一个COMMA(,)之前包含-
字符。
示例:
Size: XS-S-M-L-XL-2XL,
或
Size: XS-S-M,
等
将被选中(包括,
)
但是Size_S,
将被忽略,因为没有-
我与:
Size:(.*)-*(.?),
但仍不能停在,
这里是1行标签:
Athletics, Fitted, Mesh, Feature_Moisture Wicking, Material_Polyester 100%, , Material_Polyester 100%, Material_Polyester Over 50%, School, Style_Short Sleeves, Size_2XL, Size_L, Size_M, Size_S, Size_XL, Size_XS, Size: XS-S-M-L-XL-2XL, Uniforms, Unisex, V-Neck, VisibleLogos, Youth
要从我的单元格中删除所有尺寸的“范围”标签,仅保留单个尺寸标签。
解决方案可在此处找到:regex101.com/r/VuTzba/1
答案 0 :(得分:2)
在模式Size:(.*)-*(.?),
中,您首先使用(.*)
进行匹配,直到字符串结尾。
此后,连字符-*
和组(.?)
中的单个字符是可选的,因此它将回溯到最后一个逗号,因为这是唯一必须匹配的字符。
要获得更精确的匹配,可以使用重复模式来匹配尺寸:
Size: (?:\d*X[SL]|L|M|S)(?:-(?:\d*X[LS]|L|M|S))*,
说明
Size:
匹配大小,后跟一个空格(?:
非捕获组
\d*X[SL]|L|M|S
与轮换中列出的项目之一匹配)
关闭群组(?:
非捕获组
-(?:\d*X[LS]|L|M|S)
匹配连字符,后跟任何列出的项目)*,
关闭组并重复0次以上并匹配逗号更广泛的模式可能是使用字符类并列出所有允许的字符Size: [XSML\d]+(?:-[XSML\d]+)*,
或匹配直到第一个逗号Size:[^,]+,
修改
要同时匹配Size: 28W-30W-32W-34W-36W-38W-40W, Size: 28W-30W-32W-34W
,或者可以使用扩展字符类,向其添加|\d+W
,并结束与逗号匹配的模式或断言字符串$
Size: (?:\d*X[SL]|L|M|S|\d+W)(?:-(?:\d*X[LS]|L|M|S|\d+W))*(?:,|$)
答案 1 :(得分:0)
我们可能想在此处的表达式中添加更多边界。让我们从类似以下内容开始:
Size:\s+([A-Z0-9-]+),
捕获组()
收集我们想要的数据的地方。
如果不需要此表达式,可以在regex101.com中对其进行修改或更改。
jex.im还有助于可视化表达式。
答案 2 :(得分:0)
Size:\s*(.*?),
将在冒号之后和下一个逗号之前跳过前导空白的所有内容。