首页 > 解决方案 > 从正则表达式查询中删除字符

问题描述

我很难理解为什么我的正则表达式查询除了我告诉正则表达式包含在查询中的符号之外还需要一个额外的字符,所以这是我的正则表达式:

([\-:, ]{1,})[^0-9]

这是我的测试文本:

Test- Product-: 1 --- 3 hour  ,--kayak:--rental

它始终包含每个起始单词的第一个字符,例如 Product 上的 P 或小时上的 h,如何防止正则表达式包含这些第一个字符?

我正在尝试获取所有破折号、双点、逗号和空格,不包括数字或任何字符。

标签: regex

解决方案


正则表达式的[^0-9]部分匹配除数字以外的任何字符,因此您应该将其从模式中删除。

不需要用捕获组包装字符类,并且{0,1}等于+,因此整个正则表达式可以缩短为

[-:, ]+

请注意,-字符类中的初始和结束位置不必转义。


推荐阅读