제 질문은 제멋대로라고 생각하지만, 여전히 명확성을 위해 예제를 게시 할 것입니다.파이썬 스크립트는 탭과 공백을 무시한 라인의 실제 시작과 일치합니다.
Gedit 편집기에서 연 자바 스크립트 파일의 줄을 주석 처리하거나 주석 처리를 제거하는 데 다음과 같은 작업 스크립트가 있습니다.
#! /usr/bin/env python
import sys
import StringIO
block = sys.stdin.read()
block = StringIO.StringIO(block)
msg = ''
for line in block:
if "//~" in line:
line = line.replace('//~','')
msg = "All lines in selection uncommented"
else:
line = "//~" + line
msg = "All lines in selection commented"
sys.stdout.write(line)
exit(msg)
가 지금은 라인의 실제 시작의 앞에 //~
을 데려 가고 싶다는 (안 공백이나 탭하지만 정말 라인 즉 문자와 문자열을 시작).
아래와 같이 regex 모듈을 사용하여이 작업을 수행하면 //~
이 두 번 추가됩니다. 즉, 행의 시작과 실제 행의 시작을 의미합니다.
#! /usr/bin/env python
import sys
import StringIO
import re
block = sys.stdin.read()
block = StringIO.StringIO(block)
msg = ''
for line in block:
if "//~" in line:
line = re.sub(r"(\s*)(\S.*)", r"\1//~\2", line)
line = line.replace('//~','')
msg = "All lines in selection uncommented"
else:
line = re.sub(r"(\s*)(\S.*)", r"\1//~\2", line)
line = "//~" + line
msg = "All lines in selection commented"
sys.stdout.write(line)
exit(msg)
어떻게하면 정규식을 사용할지 여부를 파이썬으로 할 수 있습니까?
그들을 제거하려면'line.lstrip()'을 사용하고, RE에서는'r '^ \ s *''로 시작하십시오. – cdarke
다음을 확인하십시오 : --- https://regex101.com/r/hU4vO7/ 4 –
@ShekharKhairnar 들여 쓰기 된 줄과 일치하지 않습니다 – Natecat