正则表达式匹配得太早
RegEx is matching too early
谁能帮我做正则表达式?
我想删除饮料标题中所有不必要的信息,如尺寸、数量等。
我制作了这个正则表达式:/(?<!^)(\d{1,2}\s?x\s?)?\d{1,2}((,|\.)\d{1,2})?\s?L?/igU
在 25 Test Drink 60% 12x1,0L
上匹配 5
和 25
。
在 Test Drink 60% 12x1,0L
上匹配 %
之前的 60
。
我怎样才能避免这些例子?我只想匹配 12x1,0L
。我不得不放这么多可选字符,因为数据源在数量和大小的格式上非常不一致。也有可能是数量少了,因为只有一个bottle/can.
我在下方和此处提供了更多示例标题:https://regex101.com/r/aQ2kO8/2
25 Test Drink 60% 12x1,0L
Test Drink 60% 2x0,5
Test Drink 3 x 0,75 L
Test Drink 4x0,75 L
Test Drink 5 x 0,75L
Test Drink 66 x 0,75
Test Drink 0,75
Test Drink 0.75
7UP 12 x 1 L
有人可以帮我解决这个问题吗?
您可以使用 (?:\d+\s*x\s*)?(?:\d+[.,])?\d+\s*L?\s*$
作为搜索模式,如果将其应用于多行文本,则必须设置 m- 和 g- 修饰符。如果您不关心 l
和 x
的字符大小写,也可能需要 i-modifier
(?:\d+\s*x\s*)?
可选地匹配数字后跟可能被空格包围的 x
(?:\d+[.,])?
可选择匹配后跟点或逗号的数字
\d+
匹配一个或多个数字
\s*L?\s*
可选地匹配可能被空格包围的 L
$
匹配行尾。根据你的描述,你要匹配的东西总是在最后,通过使用这个我们可以避免在饮料名称中匹配数字
谁能帮我做正则表达式? 我想删除饮料标题中所有不必要的信息,如尺寸、数量等。
我制作了这个正则表达式:/(?<!^)(\d{1,2}\s?x\s?)?\d{1,2}((,|\.)\d{1,2})?\s?L?/igU
在 25 Test Drink 60% 12x1,0L
上匹配 5
和 25
。
在 Test Drink 60% 12x1,0L
上匹配 %
之前的 60
。
我怎样才能避免这些例子?我只想匹配 12x1,0L
。我不得不放这么多可选字符,因为数据源在数量和大小的格式上非常不一致。也有可能是数量少了,因为只有一个bottle/can.
我在下方和此处提供了更多示例标题:https://regex101.com/r/aQ2kO8/2
25 Test Drink 60% 12x1,0L
Test Drink 60% 2x0,5
Test Drink 3 x 0,75 L
Test Drink 4x0,75 L
Test Drink 5 x 0,75L
Test Drink 66 x 0,75
Test Drink 0,75
Test Drink 0.75
7UP 12 x 1 L
有人可以帮我解决这个问题吗?
您可以使用 (?:\d+\s*x\s*)?(?:\d+[.,])?\d+\s*L?\s*$
作为搜索模式,如果将其应用于多行文本,则必须设置 m- 和 g- 修饰符。如果您不关心 l
和 x
(?:\d+\s*x\s*)?
可选地匹配数字后跟可能被空格包围的x
(?:\d+[.,])?
可选择匹配后跟点或逗号的数字\d+
匹配一个或多个数字\s*L?\s*
可选地匹配可能被空格包围的L
$
匹配行尾。根据你的描述,你要匹配的东西总是在最后,通过使用这个我们可以避免在饮料名称中匹配数字