【发布时间】:2018-10-12 09:31:27
【问题描述】:
我在学习 perl 5 天时遇到了这个问题。 尝试使用正则表达式从文件中提取某个字符串并将这些字符串置于苛刻的环境中并仅打印出唯一值,例如文本文件包含如下字符串:
"placement Z F97342"
"placement Z F97342"
"placement d F97342"
"placement g F97342"
"placement Z F97342"
预期输出:
"placement Z F97342"
"placement d F97342"
"placement g F97342"
下面是我的代码,但它给了我“placement Z”重复的行
open(FHR, "<test.txt") or die "Cannot open file $!";
while (<FHR>){
chomp($_);
$_ =~/placement/g;
print "$_\n";
}
有什么帮助吗?
【问题讨论】:
-
欢迎使用 Stack Overflow 和 Perl 标签。请花点时间阅读How to Ask 和tour。当询问有关编程的问题时(不仅在这里,而且在一般情况下),尽可能精确是很重要的。您的问题包含很多看起来很奇怪的空格。我已经修复了一些布局问题,但我不知道您的输入文件中是否真的包含所有这些空白空间,或者您是否只是不知道 markdown 是如何工作的。请edit您的问题并使输入和预期输出看起来完全像您的真实数据。还请附上您的完整、真实的代码。谢谢
-
你能解释一下为什么这两行被认为是相同的:` "placement Z F97342" /placement Z F97342"` 一个有两个双引号,另一个只有一个双引号。
-
您说您正在尝试提取字符串并将其放入哈希中。但是您的代码不会尝试这些事情。到目前为止,它所做的只是打印所有包含单词 placement 的行。您需要更具体地说明您需要帮助的内容。例如,您还没有告诉我们有关该哈希的信息。匹配是键还是值?你想数点什么吗?为什么是哈希?同样,您需要尽可能精确。编程中没有半真半假。
-
另外,如果您只想删除重复项,请参阅 Perl 常见问题解答“如何从列表或数组中删除重复元素”:perldoc.perl.org/…
-
好吧,可能我的表述有误。我只想获取字符串的唯一值。