【发布时间】:2018-10-18 00:31:40
【问题描述】:
我目前正在为一个班级编写电话簿程序,我在正则表达式部分遇到了一些麻烦,以便格式化我的文本并找到我正在寻找的内容。首先,我无法将我的电话号码文本编辑成我想要的内容。我能够找到连续有 7 个数字的文本 (777777),但我无法将其替换为 (1-701-777-777)。
if($splitIndex[1] =~ m/^(\d{3}\d{4})/) {
$splitIndex[1] =~ s/([\d{3}][\d{4}])/1-701-[$1]-[$2]/;
print "Updated: $splitIndex[1]";
}
当我运行这段代码时,输出最终是(我不能在这里嵌入图像是输出https://imgur.com/a/8HtW7xm)。
其次,我在执行搜索的实际正则表达式部分时遇到了麻烦。我将所有可能的字母组合保存在 $letofSearch 中,将数字顺序组合保存在 $numOfSearch 中。通过在正则表达式中玩耍,我知道如果我做 [$numOfSearch]+[$numOfSearch[-1]...[$numOfSearch[1] 它给了我正确的数字查找,但我无法正确地写它在我的代码中。
#If user input is only numbers
if($searchValue =~ m/(\D)/) {
#print "Not a number\n";
if($splitIndex[1] =~ m/([$numOfSearch]+)/) {
if($found == 0) {
print "$splitIndex[0]:$splitIndex[1]\n";
$found = 1;
}
}
if($splitIndex[0] =~ m/([$letOfSearch])/i) {
if($found == 0) {
print "$splitIndex[0]:$splitIndex[1]\n";
$found = 1;
}
}
$found = 0;
} else {
#If it is a number search for that number combo immedietly
if($splitIndex[1] =~ m/([$numOfSearch]+)/) {
if($found == 0) {
print "$splitIndex[0]:$splitIndex[1]\n";
$found = 1;
}
}
if($splitIndex[0] =~ m/([$letOfSearch])/i) {
if($found == 0) {
print "$splitIndex[0]:$splitIndex[1]\n";
$found = 1;
}
}
$found = 0;
}
}
}
【问题讨论】:
-
嗯。你认为
()和[]在正则表达式中做了什么?
标签: regex string perl search substitution