특정 문자로 시작하는 여는 괄호 뒤의 단어를 검색하는 올바른 grep 정규식 문자열은 무엇입니까?

특정 문자로 시작하는 여는 괄호 뒤의 단어를 검색하는 올바른 grep 정규식 문자열은 무엇입니까?

내 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 +또는 공백
  • \)- 문자 그대로의 의미)

관련 정보