正则表达式匹配所有文本,除了" x%off"

时间:2017-10-09 13:03:43

标签: java regex elasticsearch

我正在尝试编写一个弹性搜索模式替换过滤器以从特殊商品的描述中删除所有文本,除了x%off,这样我就可以使用范围查询查询x,而不是任何不是%的数字也被退回了。

这意味着我需要一个正则表达式来匹配所有文本,除了" x%off"或者"保存x%"其中x是任何数字。然后我应该能够用空字符串替换该文本。

我写了一个与我想保留的词匹配的正则表达式:

(?:(\d+)%[-\s][Oo]ff|(?:[Ss]ave [Uu]p to|[Ss]ave)\s?(?:of\s)?(\d+)%)

"当您花费100美元时,可获得10%的折扣" - > " 10%折扣"

"在100%纯橙汁中节省高达15%" - > "节省高达15%"

"欧洲旅游节省20%,亚洲旅游节目10%,#34; - > "节省20%10%的折扣"

我需要的是一个正则表达式,它匹配我想要摆脱的所有内容(与上面的表达式相反),这样我就可以用空白字符串替换它,只留下x或只是我的短语匹配上面。 (理想情况下,我希望只留下" 10"," 15"" 20 10"而不是上述短语,但这不是必需的)。

Elasticsearch使用Java正则表达式,因此我使用RegexPlanet来测试它,因为regex101似乎不支持Java。

0 个答案:

没有答案