developer tip

문자열에서 Python 와일드 카드 검색

copycodes 2020. 12. 6. 21:42
반응형

문자열에서 Python 와일드 카드 검색


내가 목록이 있다고합시다

list = ['this','is','just','a','test']

사용자가 와일드 카드 검색을 수행하도록하려면 어떻게해야합니까?

검색어 : 'th_s'

'this'를 반환 할 것입니다.


정규식은 아마도이 문제에 대한 가장 쉬운 해결책 일 것입니다.

import re
regex = re.compile('th.s')
l = ['this', 'is', 'just', 'a', 'test']
matches = [string for string in l if re.match(regex, string)]

사용 fnmatch:

import fnmatch
lst = ['this','is','just','a','test']
filtered = fnmatch.filter(lst, 'th?s')

허용 할 경우 _, 와일드 카드로 바로 대체 모든 밑줄 '?'또는 (한 문자) *(여러 문자).

사용자가 더 강력한 필터링 옵션을 사용하도록하려면 정규 표현식 을 사용하도록 허용하는 것이 좋습니다 .


fnmatch 모듈을 사용해 볼 수 있습니다 . 쉘과 같은 와일드 카드 구문이 있습니다.

또는 정규 표현식을 사용할 수 있습니다.

다시 가져 오기


와일드 카드에 대한 특정 구문을 의미합니까? 일반적으로 *"하나 또는 여러"문자를 ?나타내며 하나를 나타냅니다.

가장 간단한 방법은 와일드 카드 식을 정규식으로 변환 한 다음 결과를 필터링하는 데 사용하는 것입니다.


정규 표현식을 사용하는 Yuushi와 같은 아이디어이지만 이것은 목록 이해 대신 re 라이브러리 내의 findall 메소드를 사용합니다.

import re
regex = re.compile('th.s')
l = ['this', 'is', 'just', 'a', 'test']
matches = re.findall(regex, string)

쉬운 방법은 시도입니다 os.system.

import os
text = 'this is text'
os.system("echo %s | grep 't*'" % text)

참고 URL : https://stackoverflow.com/questions/11427138/python-wildcard-search-in-string

반응형