gpt4 book ai didi

php - 使用正则表达式删除字符串中不需要的字符

转载 作者:可可西里 更新时间:2023-11-01 00:55:24 26 4
gpt4 key购买 nike

我正在尝试使用以下示例删除与特定模式不匹配的字符:

精确匹配 4 个字母 [a-zA-Z]{4} 后跟空格 \s{1,} 然后是 4 个字符开头的模式一个字母表,最后 3 个数字 [a-zA-Z]{1}[0-9]{3}

如果我提供 ABEH A501;生物学 L340;生物学 Z620; Q799; ABEH A501 它匹配除 Q799 之外的所有内容,现在,我需要从字符串中删除/替换 Q799

我尝试申请 Negated Character Classes但仍然没有得到想要的结果。

$mystring = "ABEH A501; BIOL L340; BIOL Z620; Q799; ABEH A501";
$string = preg_replace("/[^a-zA-Z]{4}\s{1,}[a-zA-Z]{1}[0-9]{3}/","",$mystring);

echo $string; //ABEH A501; BIOL L340; BIOL Z; ABEH A501

期望的结果应该是 ABEH A501;生物学 L340;生物学 Z620; ABEH A501

Q799 已被删除,因此也是另一个匹配字符串的一部分,不确定这是由于错误的 regEx 还是错误的否定字符类应用。

最佳答案

在 PHP 中,您可以定义一个已知的良好匹配正则表达式并使用 PCRE 动词 (*SKIP)(*F) 来跳过这些匹配替换:

$mystring = "ABEH A501; BIOL L340; BIOL Z620; Q799; ABEH A501";
echo preg_replace('/[a-zA-Z]{4}\s+[a-zA-Z]\d{3}(*SKIP)(*F)|\w+\W*/', '', $mystring);

RegEx Demo

输出:

ABEH A501; BIOL L340; BIOL Z620; ABEH A501

PHP Code Demo

关于php - 使用正则表达式删除字符串中不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com