我正在尝试编写一个正则表达式,它将从目标字符串中删除/替换问题字符串。在这种情况下,我的问题字符串是:
top:
我的目标字符串是:
F12+ vAWGPHGM
挑战是问题字符串并不总是完整/完整,可以作为单个字符出现。例如:
F 1t2op+:vAWGPHGM
F t12o+p: vAWGPHGM
F1t2op+:vAWGPHGM
F 12top+: vAWGPHGM
我正在使用pcre(php)正则表达式。
其他考虑因素包括上面的数字可以是一个或两个数字,并且加号并不总是存在。我一直试图在regex101上解决这个问题,但运气不好。 Regex101
答案 0 :(得分:1)
您可以使用2个捕获的组来捕获t
之前和之后的数字,并在替换时使用其反向引用:
$repl = preg_replace('/\h*(\d*)t(\d*)o\+?p\+?:\h*/', '$1$2+ ', $str);
对于所有4个案例,替换结果将是:
F12+ vAWGPHGM
答案 1 :(得分:0)
如果我理解你的问题,你只想摆脱字符t
,o
,p
和:
,如果是这样,那么你可以使用这样的角色类:
[top:]
<强> Working demo 强>
Php代码
$str = 'F 1t2op+:vHGM
F t12op: vHGM
1t2op+:vHGM
F 12top+: vHGM';
$result = preg_replace('/[top:]/', '', $str);
请记住,这不遵循任何顺序,这只是从字符串中删除这些字符。