php - 避免删除字符串前缀中不需要的字符

标签 php regex preg-replace

我有一个简单的正则表达式来从字符串中删除不需要的字符(例如数字):

preg_replace(/[^a-z_]/, '', $str);

但现在它必须保留一个前缀,其中包含一些被删除的字符。该前缀格式由一个字母字符后跟四个数字组成(前缀示例:b1234)。字符串示例:

b7001_cp_parc_venc_fluxo

所以我尝试为该前缀添加一个非捕获组,但我无法让它工作。尝试使用类似的东西:

(?:b[0-9]{4})[^a-z_]

但它会停止删除整个字符串中的数字字符,例如。

最佳答案

一个选项是使用 SKIP FAIL .

b[0-9]{4}(*SKIP)(*F)|[^a-z_]
  • b[0-9]{4}(*SKIP)(*F) 匹配您要避免的内容
  • | 或者
  • [^a-z_] 匹配除 a-z_
  • 以外的任何字符

您还可以将字符类重复 1 次以上 [^a-z_]+ 以获得连续字符的单个匹配。

Regex demo | Php demo

例子

$pattern = "/b[0-9]{4}(*SKIP)(*F)|[^a-z_]/";
$str = "b7001_cp_parc_venc_fluxo_1234";
echo preg_replace($pattern, "", $str);

输出

b7001_cp_parc_venc_fluxo_

关于php - 避免删除字符串前缀中不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67011263/

相关文章:

regex - r + 搜索字符串并返回值

php - 在php中用单引号替换json字符串中的双引号

php - 使用 preg_replace PHP 删除其中的标签和元素

php - 使用 preg_replace 删除 php 中两个字符串之间的文本

javascript - PHP 无需按下按钮即可立即提交表单数据

PHP Sql 导入不起作用

php - 我怎样才能简化这个 php mysql count 代码并减少查询?

c# - 禁止逗号的正则表达式

javascript - .NET 的 JavaScript 中的 Match.Result

php - 即使在调用验证函数后,使用 Bcrypt 密码验证登录访问也会出现问题