-
정규식:
정규식을 사용하면 일련의 특수 문자를 사용하여 일치 패턴을 구성한 다음 비교 개체에 일치 항목이 포함되어 있는지 여부에 따라 일치 패턴을 데이터 파일, 프로그램 입력 및 웹 페이지의 양식 입력과 같은 대상 개체와 비교할 수 있습니다. 패턴에 따라 해당 프로그램을 실행합니다. 규칙성은 단순성, 실용성 및 속도로 인해 프로그래머의 사랑을 받았습니다. 
정규식 작성에 대한 몇 가지 생각:
1. 먼저 규칙을 결정합니다. 어떤 문자열을 매칭해야 하는지, 어떤 부분으로 구성되어 있는지, 어떤 특징을 가지고 있는지 살펴보세요.
2. 가장 작은 단위를 제안합니다. 때로는 일치하는 규칙이 반복되기도 합니다. 공통점을 찾아 규칙으로 계획할 수도 있습니다.
3. 규칙과 최소 단위에 따라 규칙적인 규칙을 하나씩 작성합니다.
4. 이러한 단위 규칙성의 조합을 통합하여 원하는 완전한 규칙성을 형성하십시오.
여기서는 몇 가지 기본 태그와 사용법을 이해해야 합니다. 모든 규칙은 기본 태그로 구성됩니다. 일반 마크업도 매우 간단하므로 이해하시는 것이 좋습니다.
정규식에서 일반적으로 사용되는 태그
1 정규식에서 일반적으로 사용되는 마커 2 ^ | 줄 또는 문자열의 시작 3 $ | 줄바꿈 이외의 문자 5 w | 단어 문자(숫자, 문자 또는 밑줄) 단어가 아닌 문자 7 d | 숫자([0-9]와 동일) 8 D | 공백이 아닌 문자 9 10 A | 문자열의 시작 11 Z | 문자열의 끝 12 z | 문자열 끝 13 14 s | 공백 문자 15 S | 공백이 아닌 문자 16 17 b | 단어 경계([] 외부) 18 B | 백스페이스([] 내부) ] | 중간에 하이픈이 있는 문자는 다음과 같은 범위를 나타냅니다. [0-9], 1 이전 표현식 22 | 25 * | 0개 이상의 이전 표현식 26 *? | 0개 이상의 이전 표현식(비탐욕) 27 + | 1개 이상의 이전 표현식(비탐욕) 29 | mn개의 이전 표현식 30 {m,n}? | mn개의 이전 표현식(비탐욕) 31 32 33 또한 {?=} { ?!} (?>) (?#) (?imx-imx) 등
가장 기본적인 예:
1 # 전체 문자열 일치 2 puts /ruby/ =~ "ruby" # 0 3 puts /ruby/ =~ "Ruby" # nil 4 5 # 줄이나 문자열의 시작과 끝 일치 6 str = "abcdef" 7 puts str 8 puts /^abc/ =~ str # 0 9 puts /def$/ =~ str # 310 11 str = "abcndefn" 12 puts /^abc/ =~ str # 013 puts /def$/ =~ str # 414 puts /abc/ =~ str # 015 puts /def/ =~ str # 416 17 #문자열 자체의 시작과 끝을 일치시킵니다 18 str = "abcndefn" 19 puts /Aabc/ =~ str # 020 puts /defZ/ =~ str # 421 puts /defz/ =~ str # nil22 23 # 단어 문자 일치 24 puts "단어 문자 일치" 25 패턴 = /w/26 puts 패턴 = ~ "abc " # 027은 패턴을 넣습니다 =~ "." # nil28 29 # 일치하는 정수 30 # d 숫자 31 # D 숫자가 아닌 32는 "일치 번호"를 넣습니다 33은 넣습니다 /d/ =~ "122" #034 puts /D / =~ "122" #nil35 puts /D/ =~ "abc" #036 37 38 #Border 39 str = "이것은 당신의 친구입니다!"40 puts str41 puts str.gsub(/b/ ,"|" ) # |This|는 |친구|!42 puts str.gsub(/B/,"-") # 이것은 당신의 친구입니다!-43
한정자 인스턴스
1은 "예선"을 넣습니다. 2는 "예선"을 넣습니다. *" 3은 "예선"을 넣습니다. *" 3은 /(abc)*/ =~ "a" # 0 4은 /(abc)*/ =~ "abc" # 0 5 6 7은 "예선"을 넣습니다. 한정자: +" 8 풋 /(abc)+/ =~ "a" # 없음 9 풋 /(abc)+/ =~ "abc" # 010 11 풋 "예선: ?" 12 풋 /(abc)?/ =~ " c" # 013 puts /(abc)?/ =~ "abc" # 014 15 16 puts "Qualifier: {n}"17 puts /(abc){2}/ =~ "abc" # nil18 puts /(abc) {2}/ =~ "abcabc" # 019 20 puts "Qualifier: {n,}"21 puts /(abc){2,}/ =~ "abc" # nil22 puts /(abc){ 2,}/ = ~ "abcabc" # 023 24 puts "Qualifier: {n,m}"25 puts /(abc){2,3}/ =~ "abc" # nil26 puts /(abc){2, 3}/ =~ " abcabcabc" # 027 28 넣기 "한정자: *?" 29 넣기 /(abc)*?/ =~ "a" # 030 넣기 /(abc)*?/ =~ "abcabc" # 031 32 넣기 "한정자: +? " 33 넣기 /(abc)+?/ =~ "a" # nil34 넣기 /(abc)+?/ =~ "abcabc" # 035 36 넣기 "예선: ??"37 넣기 /(abc)??/ = ~ "a" # 038 puts /(abc)??/ =~ "abcabc" # 039 40 41 #match, {1} {3}42 # {3}이 일치할 수 있으면 {1}은 확실히 일치하지만 reverse는 true가 아닙니다. 43 # 일치 범위: {1} > {3}
일반적인 예:
1은 "예"를 넣는다 2 #전화번호 일치: 3 #일반적으로 중국 전화번호는 7~8자리, 지역번호는 3~4자리 정수, 지역번호 첫 자리는 0, 구분 기호 '-'는 중간 4에 사용 #첫번째와 마지막 제한에 주의 기호 5 패턴 = /^0d{2,3}-d{7,8}$/ 6 puts 패턴 =~ "010-82809999" # 0 7 넣기 패턴 =~ "00010-82809999" # nil 8 9 #휴대폰번호 10 일치 # 1부터 두 번째 자리는 3, 5, 8, 11 자리 11 패턴 = /^1[3,5,8] d{9}$/12 puts 패턴 =~ "15810990001" #013 14 #ID 카드 번호 15 패턴 = /d{18}|d{15}/16 17 #IP18 일치 #다음보다 크지 않은 정수 그룹 4개 255, '.'으로 구분 19는 "IP" 20 num = /^d|[01]?d{1,2}|2[0-4]d|25[0-5]/21 패턴 = /^(#{num}.){3} #{num}$/22 # 전체: 패턴 = /^(^d|[01]?d{1,2}|2[0- 4]d|25[0-5].) {3}^d|[01]?d{1,2}|2[0-4]d|25[0-5]$/ 23 puts 패턴 =~ "127.0.0.1" # 024 puts 패턴 =~ "254.255.255.255"25 26 #이메일 주소 일치 27 패턴 = /^w+@w+.w+$/ #'-'가 없습니다. 28 패턴 = /^[w-]+@[w- ]+.[w-]+$/29 puts 패턴 =~ " [email protected] " #030 31 # url32 # http:// 일치 www.google.cn33 패턴 = /(http|https|ftp): (//|\\)((w)+[.]){1,}(net|com|cn|org| cc|tv|[0-9]{1,3})( ((/[~]*|\[~]*)34 (w)+)|[.](w)+ )*(((([?](w)+){ 1}[=]*))*((w)+){1}([&](w)+[=]( w)+)*)*/35 36개 패턴 =~ " http://www.google.cn?uid=123 " #0
다른
탐욕의 의미
1 puts "greedy" 2 #Greedy는 가능한 가장 긴 문자열과 일치함을 의미합니다. 3 # '.' 의미: 개행 문자 이외의 문자 4 str = "바다가 달빛으로 바랜 땅과 만나는 곳" 5 puts str 6 match = /.* the/.match(str) 7은 match[0] # 바다가 만나는 곳을 넣습니다. *는 탐욕스럽습니다. 욕심을 부리고 싶지 않다면 + '?' 8 #*?non-greedy 9 match = /.*?the/.match(str)10 puts match[0] # where the11 12 str.insert( 0,"안녕하세요 n")13 match = /.*?the/.match(str)14는 match[0] #where를 넣습니다.
긍정적이고 부정적인 미리보기
1 #긍정적 및 부정적 미리보기 2는 "긍정적 및 부정적 미리보기"를 넣습니다. 3 s1 = "New World Dictionary" 4 s2 = "New World Symphony" 5 s3 = "New World Order" 6 7 reg = /New World (?=Dictionary| Symphony)/ 8 m1 = reg.match(s1) 9 puts m1.to_a[0] # "New World"10 m2 = reg.match(s2)11 puts m2.to_a[0] # "New World"12 puts reg .match(s3) # nil13 14 puts "negative Preview"15 16 reg = /New World (?!Symphony)/ # "New World" 뒤에 "Symphony"가 없습니다. 17 puts reg.match(s1).to_a[0 ] # "새로운 세계"18은 reg.match(s2).to_a[0]을 넣습니다 # nil19는 reg.match(s3).to_a[0]을 넣습니다 # "새로운 세계"
-