English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C에서 가변 크기의 배열을 초기화

여기서는 Python을 사용하여 UNIX 셸 스타일 패턴 매칭 기술을 볼 수 있습니다.fnmatch모듈은 작업을 완료하는 데 사용됩니다. 이 모듈은 파일 이름을 패턴과 비교하고, 매칭 결과에 따라 True 또는 False를 반환합니다.

이를 사용하기 전에 먼저 가져와야 합니다fnmatch기본 라이브러리 모듈.

import fnmatch

Unix 터미널에서는 일부 와일드 카드가 패턴을 매칭할 수 있습니다. 다음과 같습니다-

  • '*문자열 '별표(*)'은 모든 내용을 매칭하는 데 사용됩니다.

  • 문자열 '?'은 단일 문자를 매칭하는 데 사용됩니다.

  • [seq] 시퀀스는 시퀀스에서의 문자를 매칭하는 데 사용됩니다

  • [!seq]는 시퀀스에서 존재하지 않는 문자를 매칭하는 데 사용됩니다.

별표(*)나 물음표(?)를 문자로 검색하려면 이렇게 사용해야 합니다: [*] 또는 [?]

fnmatch()메서드

fnmatch()메서드는 두 가지 매개변수가 있습니다. 첫 번째는 파일 이름이고 두 번째는 패턴입니다. 이 기능은 파일 이름이 주어진 패턴과 일치하는지 확인하는 데 사용됩니다. 운영 체제가 대소문자를 구분하면 매칭 전에 매개변수가 대문자나 소문자로 표준화됩니다.

예제 코드

import fnmatch
import os
file_pattern = 'test_f*'
files = os.listdir('./unix_files)
for filename in files:
   print('File: {}\t: {}'.format(filename, fnmatch.fnmatch(filename, file_pattern)))

출력 결과

$ python3 310.UNIX_filename.py
File: test_file5.txt : True
File: test_file2.png : True
File: test_file1.txt : True
File: another_file.txt : False
File: TEST_FILE4.txt : False
File: abc.txt : False
File: test_file3.txt : True
$

filter()메서드

filter()메서드는 두 개의 매개변수도 가지고 있습니다. 첫 번째 매개변수는 이름이고 두 번째 매개변수는 패턴입니다. 이 패턴은 모든 파일 이름 목록에서 일치하는 파일 이름 목록을 찾습니다.

예제 코드

import fnmatch
import os
file_pattern = 'test_f*'
files = os.listdir('./unix_files)
match_file = fnmatch.filter(files, file_pattern)
   print('All files:' + str(files))
      print('\nMatched files:' + str(match_file))

출력 결과

$ python3 310.UNIX_filename.py
All files:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'another_file.txt', 'TEST_FILE4.txt', 'abc.txt', 'test_file3.txt'
Matched files:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'test_file3.txt'
$

translate()메서드

translate()메서드는 하나의 매개변수를 사용합니다. 이 매개변수는 패턴입니다. 우리는 이 함수를 사용하여 외부 스타일 패턴을 다른 패턴으로 변환하여 Python에서 정규 표현식을 사용하여 일치를 확인할 수 있습니다.

예제 코드

import fnmatch, re
file_pattern = 'test_f*.txt'
unix_regex = fnmatch.translate(file_pattern)
regex_object = re.compile(unix_regex)
   print('Regular Expression:' + str(unix_regex))
      print('Match Object:' + str(regex_object.match('test_file_abcd123.txt')))

출력 결과

$ python3 310.UNIX_filename.py
Regular Expression:(?s:test_f.*\.txt)\Z
Match Object:<_sre.SRE_Match object; span=(0, 21), match='test_file_abcd123.txt'>
$