정규 표현 식 교체 에 대한 생각 (상식)

1765 단어
머리말
며칠 전에 nginx 를 설정 한 subs_filter 이 모듈 은 웹 페이지 가 되 돌아 오 는 내용 을 바 꿀 수 있 는 역할 을 합 니 다.
subs_filter "  " "Hello world" r;

예 를 들 어 상소 코드 는 원래 홈 페이지 에 포 함 된 를 모두 Hello world 로 바 꿀 수 있다. 마지막 r 은 정규 일치 라 고 표시 할 수 있다. 즉, 첫 번 째 매개 변 수 는 정규 일치 라 고 쓸 수 있다. 그리고 나 는 문 제 를 만 났 다. 내 가 바 꾼 내용 은 확실 하지 않 고 하나의 링크 라 는 것 만 알 지만 나 는 전체 링크 의 정규 를 다 쓸 수 없다.링크 의 url 이 너무 많이 변 했 기 때문에 저 는 머리 꼬리 부분 을 제한 하여 대응 하 는 내용 과 일치 할 수 있다 고 생각 했 습 니 다.
해결 방법
두미 가 같 음 을 제한 하면 머리 꼬리 를 일치 하 는 정규 와 내용 으로 바 꾸 는 과정 에서 두 미 를 모두 쓸 수 있 습 니 다. 예 를 들 어:
subs_filter "  .*?  " "  Hello world  " r;

이상 은 데이터 xxxx 결 과 를 데이터 로 바 꿀 수 있 습 니 다. Hello World 결 과 는 같은 원리 로 url 을 교체 해도 됩 니 다. url 의 정규 가 어떻게 쓰 는 지 알 필요 가 없습니다. 머리 와 꼬리 부분 이 한정 되 어 있 으 면 됩 니 다.
기타
python 을 쓰 는 습관 이 re. findall 습관 으로 일치 하 는 그룹 을 만 들 기 때문에 괄호 안의 내용 만 바 꿀 줄 알 았 습 니 다.
subs_filter "  (.*?)" "Hello world" r;

이 문법 은 잘못된 것 입 니 다. nginx 의 subsfilter 는 이런 문법 이 없습니다.
이 글 을 쓴 이 유 는 제 가 그 당시 에 논리 적 인 구덩이 에 빠 졌 기 때 문 입 니 다. 만약 에 정규 안에 머리 와 꼬리 를 썼 다 면 머리 와 꼬리 는 제 가 원 하 는 것 이 아니 었 습 니 다. 어떻게 해 야 할 지 생각 했 습 니 다. 머리 와 꼬리 를 쓰 지 않 으 면 제 가 일치 하 는 내용 을 찾 을 수 없 었 습 니 다. 그런데 갑자기 생각 났 습 니 다. 바 꿀 필요 가 없 는 내용 은 바 뀐 내용 에서 다시 쓰 면 됩 니 다. 아주 간단 합 니 다.
정규 바 꾸 기 안에 정규 가 일치 하면 내용 이 필요 없 이 바 꾼 내용 에 다시 한 번 쓰 면 됩 니 다.

좋은 웹페이지 즐겨찾기