내 Python 스크립트 중 일부에서는 glob.glob(parent_folder_path + glob_str)
관련 파일이 포함된 이 줄을 올바른 grep 명령을 사용하여 콘솔에 인쇄해야 하지만 지금까지는 인쇄 방법을 모릅니다.
모든 - 줄을 찾는 코드 glob.glob
는 다음과 같습니다.
grep --exclude-dir='.history' --exclude-dir='__pycache__' --exclude-dir='.wine' -Rinw /home/andylu/Desktop/Python/Scripts/ -e 'glob.glob'
하지만 이것은 여전히 제가 달성하고 싶은 정확성이 아닙니다. 정규식 문자열로 사용되면 'glob.glob(p*'
검색 결과에 한 줄만 나타납니다. 결과가 나한테 주어진다는 glob.glob()
게 이해가 안 되네요 .(p*
()
다음으로 나는 그것을 시도했고 'glob.glob(p.*'
실제로 효과가 있었고 모든 결과를 보여주었습니다 glob.glob(parent_folder_path + glob_str)
.
시행착오를 거쳐 가까스로 찾았지만 grep 구문을 더 잘 이해하고 싶습니다. 마지막 정규식 문자열은 다음에 따라 유효합니까?이 치트 시트, .
임의의 문자 및 *
임의의 반복 횟수를 나타냅니까?
답변1
당신의 추측은 꽤 가깝습니다. 정규식에서 시퀀스는 p*.
"0개 이상의 문자 p
뒤에 임의의 문자 중 하나가 오는 것"을 의미합니다.
*
- 0개 이상의 선행 토큰.
- 정확히 하나의 문자
정규식에서 보다 일반적인 "전역 와일드카드"는 .*
"모든 유형의 하나 이상의 문자"를 의미합니다.
$
표현식에 태그("도메인 끝"을 의미) 가 없기 때문에 추측이 유효합니다 .
이 경우 다음과 같은 표현이 필요할 수 있습니다 /glob\.glob(p.*/
.
glob\.glob(p
- 리터럴 문자열glob.glob(p
다음에.*
- 모든 유형의 문자 중 하나 이상
더 자세히 설명하자면, 예를 들어 모든 호출을 한 쌍으로 더 광범위하게 일치시키려면 glob.glob()
다음을 수행할 수 있습니다 /glob\.glob\([a-z_+ ]+\)/
.
glob\.glob\(
- 리터럴 문자열glob.glob(
[a-z_+ ]+
- 다음 중 하나 이상: 문자 az, 밑줄, a+
또는 공백\)
- 문자 그대로의 의미)