字符串有带分号的数据,现在我要删除两个分号中的所有数据,并保留其余的数据。我使用perl regex从字符串中删除不需要的数据:
弦乐:
$val="Data;test is here ;&data=1dffvdviofv;&dt&;&data=343";
现在,我们希望在字符串中删除每个分号之间的所有数据:
$val=~s/(.*)(\;.*\;)(.*)$/$1$3/g;
但这对我没用。最后的结果如下:
Data &data=1dffvdviofv&data=343
发布于 2018-04-02 07:31:16
问题之一是.*
是贪婪的,也就是说,它会消耗尽可能多的东西。您可以通过编写.*?
来实现它的非贪婪,但这本身并不能修复正则表达式,因为您已经用$
将其锚定到字符串的末尾。就我个人而言,我不认为需要捕获组,你可以只写
$val =~ s/;.*?;//g;
我假设您的预期输出(Data &data...
)中的额外空间是一个错误。
您还可以考虑为任何数据格式使用适当的解析器。
https://stackoverflow.com/questions/49613925
复制相似问题