2019/11/18 【 마스크 매 칭 】

제목 1: [마스크 매 칭] 버클 - 44
문자열 지정 (s) 와 문자 모드 (p), 지원 실현 '?' 화해시키다 '*' 일치 하 는 마스크 입 니 다.
'?' 모든 단일 문자 와 일치 할 수 있 습 니 다. '*'임의의 문자열 과 일치 할 수 있 습 니 다. (빈 문자열 포함)두 문자열 이 완전히 일치 해 야 일치 합 니 다.
설명:
s 이 가능 하 다, ~ 할 수 있다,... a-z 라 는 소문 자 를 썼 다.p 이 가능 하 다, ~ 할 수 있다,... a-z 소문 자 ? 화해시키다 *. 예시 1:
입력: s = "aa"p = "a"출력: false 설명: "a"는 "aa"전체 문자열 과 일치 할 수 없습니다.예시 2:
입력: s = "aa"p = "*"출력: true 설명: '*' 임의의 문자열 과 일치 할 수 있 습 니 다.예시 3:
입력: s = "cb"p = "? a"출력: false 설명: '?' 'c' 와 일치 할 수 있 지만 두 번 째 'a' 는 'b' 와 일치 할 수 없습니다.예시 4:
입력: s = "adceb"p = "* a * b"출력: true 해석: 첫 번 째 '*' 는 빈 문자열 과 일치 할 수 있 고, 두 번 째 '*' 는 문자열 'dce' 와 일치 할 수 있 습 니 다. 예제 5:
입력: s = "acdcb"p = "a * c? b"출력: false
#!/bin/bash
#     
#author:yzt 2019-11-18
#
read -t 30 -p "        :" string
read -t 30 -p "         :" model
conten=""
n_model=`echo "$model" |sed 's#?#.#g'|sed 's#*#.*#g'`
content=`echo "$string" |egrep -w "$n_model" tmp.txt`
if [ -z $content ];then
        echo "false"
else
        echo "True"
fi

 
스 크 립 트 분석:
첫째: echo "$model"| sed 's\#?\#.\#g'|sed 's#*#.*#g'  >입력 한 문자 모드 의 "?"를 셸 의 "."로 바 꿉 니 다.그 다음 에 '*' 의 역할 을 셸 에서 같은 역할 을 하 는 '. *' (점 별표) 로 바 꿉 니 다.
두 번 째: egrep - w "$n model"tmp. txt   >셸 에서 egrep 는 grep 보다 더 많은 확장 표현 식 을 지원 합 니 다. grep 의 확장 버 전 을 위해 전통 적 인 grep 가 할 수 없 거나 불편 한 작업 을 많이 개량 하 였 습 니 다.
세 번 째: egrep 에서 "."는 임 의 문 자 를 대표 하고 ". *"는 임 의 문 자 를 임 의 로 대표 합 니 다.
 
스 크 립 트 효과:
[root@localhost leetcode]# ./tongpeifupipei.sh
        :aa
         :a
false
[root@localhost leetcode]# ./tongpeifupipei.sh
        :aa
         :*a
True
[root@localhost leetcode]# ./tongpeifupipei.sh
        :aa
         :*
True
[root@localhost leetcode]# ./tongpeifupipei.sh
        :cb
         :?a
false
[root@localhost leetcode]# ./tongpeifupipei.sh
        :adceb
         :*a*b
True
[root@localhost leetcode]# ./tongpeifupipei.sh
        :acdcb
         :a*c?b
false

좋은 웹페이지 즐겨찾기