regex - 从正则表达式查询中删除字符
问题描述
我很难理解为什么我的正则表达式查询除了我告诉正则表达式包含在查询中的符号之外还需要一个额外的字符,所以这是我的正则表达式:
([\-:, ]{1,})[^0-9]
这是我的测试文本:
Test- Product-: 1 --- 3 hour ,--kayak:--rental
它始终包含每个起始单词的第一个字符,例如 Product 上的 P 或小时上的 h,如何防止正则表达式包含这些第一个字符?
我正在尝试获取所有破折号、双点、逗号和空格,不包括数字或任何字符。
解决方案
正则表达式的[^0-9]
部分匹配除数字以外的任何字符,因此您应该将其从模式中删除。
不需要用捕获组包装字符类,并且{0,1}
等于+
,因此整个正则表达式可以缩短为
[-:, ]+
请注意,-
字符类中的初始和结束位置不必转义。
推荐阅读
- bash - 使用 bash 将文件名中的子字符串替换为基于 .csv 文件中的成对(旧、新)值的新子字符串
- php - Jwt 令牌解码 - Symfony 4
- php - 数组在更新后不保留以前的元素
- php - User::all() 函数的 Laravel 等效项
- apache-spark - Pyspark:将 tar.gz 文件加载到数据框中并按文件名过滤
- ios - 数据核心顺序与何时案例
- powershell - 通过 PowerShell 在 Windows 10 中更改和更新光标的大小
- assembly - 如何在ARM汇编中将数字移动给定位数?
- sql - SQL 更新查询以替换列中的最后 4 个字符
- html - 如何创建移动优先响应标题