8검사기 만드는 순서 5/7
검사 코드를 써요

아래는 그 구조를 짧게 줄인 코드예요. 걸린 곳이 있으면 2로 끝나서, 올리기 전 단계에서 멈출 수 있어요.
# 블로그 원고에서 AI 티 나는 표현을 찾는다. 목록은 이 파일 한 곳에만 둔다.
import re, sys
RULES = [
# (이름, 찾을 모양, 고치는 법)
("연결어미 뒤 쉼표", r"(?<![사창보참최중광])고,|[가-힣](?:으며|며|지만|면서|아서|어서),", "쉼표를 빼거나 문장을 끊는다"),
("물건이 사람처럼 움직이는 말", r"살아납니다|떨어져 나옵니다|부딪히지|묻힙니다|굽이칩니다|스며듭니다|번집니다|감돕니다|남습니다", "눈에 보이는 대로 쓴다"),
("추상 어미", r"쪽입니다|결입니다|자리입니다|축에 듭니다|로 읽힙니다", "무엇이 어떤지 바로 쓴다"),
("상투 도입·마무리", r"결론적으로|정리하자면|크게 (?:두|세|네) 가지로|다음과 같은", "빼고 바로 본론"),
]
text = open(sys.argv[1], encoding="utf-8").read()
found = 0
for no, line in enumerate(text.splitlines(), 1):
for name, pat, fix in RULES:
for m in re.finditer(pat, line):
found += 1
print(f"{no}행 [{name}] «{m.group(0)}» → {fix}")
print(f"걸린 곳 {found}개")
sys.exit(2 if found else 0)
쉼표 규칙의 (?<![사창보참최중광])는 «사고,» «광고,»처럼 명사 끝의 «고»를 빼려고 넣었어요. 처음에는 «하고,»처럼 좁게 잡았다가 «얇고,» 같은 흔한 꼴을 놓쳐서 넓혔어요.