【问题标题】:Remove characters from regex query从正则表达式查询中删除字符
【发布时间】:2018-12-09 01:21:22
【问题描述】:

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

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

这是我的测试文本:

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

它总是包含每个起始词的第一个字符,例如 Product 上的 P 或小时上的 h,我怎样才能防止正则表达式包含这些第一个字符?

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

【问题讨论】:

  • 可能是[-:, ]+(?!\d)?还是[-:, ]+(?![-:, \d])?你能解释一下你在追求什么吗?
  • 或者([\-:, ]{0,})(?<=[^0-9]) ?
  • P 不是数字,所以 [^0-9] 会匹配它。如果你不想这样,不要在你的正则表达式中输入[^0-9]
  • 对不起,当然……我没有提到我要做什么……非常抱歉:/我正在尝试获取所有破折号、双点、逗号和空格,不包括数字或任何字符
  • 好的,所以使用[-:, ]+。它不匹配数字和字母。

标签: regex


【解决方案1】:

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

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

[-:, ]+

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

【讨论】:

  • 感谢您的解释! :)
猜你喜欢
  • 2015-12-31
  • 2019-08-20
  • 2014-05-21
  • 2010-12-22
  • 2012-02-26
  • 1970-01-01
  • 2021-09-07
  • 2021-01-17
相关资源
最近更新 更多