我正在处理 Request Tracker 4.0 中的一些 Perl 代码,并且遇到了票证请求者的消息被切断的错误。我是 Perl 的新手,我已经使用正则表达式做了一些工作,但是即使在阅读了很多内容之后,我也遇到了一些麻烦。
我已将问题缩小到这行代码:
$content =~ s/\n-- \n.*?$//s
我不完全理解它在做什么,并希望得到更好的解释。
我知道这s/ /
是匹配模式\n-- \n.*?$
并将其替换为空。
我不明白是做什么.*?$
的。以下是我的基本理解:
.
是除 \n 之外的任何字符*
是前一个字符的 0 次或多次?
是前一个字符的 0 或 1 倍$
是字符串的结尾
然后,据我了解,决赛s
使.
比赛新线
因此,粗略地说,我们将替换任何以 - 开头的文本\n-- \n
- 这行代码导致了一些可疑的行为,如果有人可以解释这里发生了什么,我很乐意解决这些问题。
有人可以解释这条线在做什么吗?它只是在第一个文本之后删除所有文本
\n-- \n
还是还有更多内容?
冗长的部分/现实生活中的问题(您无需阅读此内容即可回答问题)
我的确切问题是它正在削减签名处的引用内容。
因此,如果来自客户的电子邮件 A 说:
订单 ABCD 是怎么回事?
-- 一些客户
工作人员回复说(注意丢失客户签名)
今天发货
订单 ABCD 是怎么回事?
客户回复
没收到,没发货!!!
-- 一些客户今天发货
订单 ABCD 是怎么回事?
当我们回复时,他们的信息将截断——这会扼杀所有上下文。
它今天发货,跟踪号 12345
没收到,没发货!!!
并导致更多的工作来解释它是什么顺序等。