题目来源:
leetcode题目,网址:193. 有效电话号码 - 力扣(LeetCode)
解题思路:
该题目分为两个部分,一个时读取 file.txt 每行的内容,另一个时判断内容是否符合要求。
读取同过while循环逐行读取,判断是否符合要求使用正则表达式。
解题代码:
# 多行
# Read from the file file.txt and output all valid phone numbers to stdout.
file='file.txt'
pat1="^[0-9][0-9][0-9][-][0-9][0-9][0-9][-][0-9][0-9][0-9][0-9]$"
pat2="^[(][0-9][0-9][0-9][)][ ][0-9][0-9][0-9][-][0-9][0-9][0-9][0-9]$"
while read line; do
if [[ $line =~ $pat1 ]] || [[ $line =~ $pat2 ]]; #不能使用[] ,会报错
then
echo $line
fi
done < $file
正则再优化
# Read from the file file.txt and output all valid phone numbers to stdout.
file='file.txt'
pat1="^([0-9]{3}[-]|[(][0-9]{3}[)][ ])[0-9]{3}[-][0-9]{4}$"
while read line; do
if [[ $line =~ $pat1 ]] ;
then
echo $line
fi
done < $file
#使用grep
# Read from the file file.txt and output all valid phone numbers to stdout.
grep -E "^([0-9]{3}[-]|[(][0-9]{3}[)][ ])[0-9]{3}[-][0-9]{4}$" file.txt
总结:
bash 和正则表达式都不会,现学现卖。