Php preg_替换如何删除除字母数字以外的所有数字
如何删除除字母数字以外的所有数字,例如,如果我有如下字符串:Php preg_替换如何删除除字母数字以外的所有数字,php,regex,Php,Regex,如何删除除字母数字以外的所有数字,例如,如果我有如下字符串: Abs_1234abcd_636950806858590746.lands 变成这样 Abs_1234abcd_.lands 在这个特定的示例中,我们可以简单地使用\uuu作为左边界,使用作为右边界,收集数字并替换: 试验 可能是这样做的 查找(?i)(? 什么都没有取代 解释: 需要注意的是,在断言中的类[a-z\d]中, 存在一个数字,没有该数字可以让“abc901234def”匹配 (?i)#不区分大小写 (? 注意-存在
Abs_1234abcd_636950806858590746.lands
变成这样
Abs_1234abcd_.lands
在这个特定的示例中,我们可以简单地使用
\uuu
作为左边界,使用
作为右边界,收集数字并替换:
试验
可能是这样做的 查找
(?i)(?
什么都没有取代
解释:
需要注意的是,在断言中的类[a-z\d]
中,
存在一个数字,没有该数字可以让“abc90123
4def”匹配
(?i)#不区分大小写
(?
注意-存在速度更快的版本(?i)\d(?)
Regex1:(?i)\d(?对于示例数据,也可以使用字符类不匹配单词字符或下划线[\W\u]
。然后忘记使用\K
匹配的内容
匹配要替换为空字符串的1+个数字,并断言右侧的数字不是单词字符或下划线
[\W_]\K\d+(?=[\W_])
下划线和句点是唯一的分隔符吗?到目前为止您尝试了什么,出了什么问题?警告:preg\u replace():未知修饰符'\'@Tod您是这样尝试的吗?您是否在模式周围添加了分隔符?/[\W\uuu]\K\d+(?=[\W\u])/
如何用点替换最后一个?
(?i) # Case insensitive
(?<! [a-z\d] ) # Behind, not a letter nor digit
\d+ # Many digits
(?! [a-z\d] ) # Ahead, not a letter nor digit
Regex1: (?i)\d(?<!\d[a-z\d])\d*(?![a-z\d])
Completed iterations: 50 / 50 ( x 1000 )
Matches found per iteration: 2
Elapsed Time: 0.53 s, 530.56 ms, 530564 µs
Matches per sec: 188,478
Regex2: (?i)(?<![a-z\d])\d+(?![a-z\d])
Completed iterations: 50 / 50 ( x 1000 )
Matches found per iteration: 2
Elapsed Time: 0.91 s, 909.58 ms, 909577 µs
Matches per sec: 109,941
[\W_]\K\d+(?=[\W_])