안녕하세요, 테스트베드용 Discourse 인스턴스에서 링크를 변환하기 위해 pg 콘솔에서 몇 가지 regexp_replace 명령을 실행하려고 하고 있습니다. 해당 인스턴스는 매우 큰 Drupal 7 포럼에서 마이그레이션되었습니다. 약 200만 개의 게시물 중 Textile 형식으로 작성된 링크가 상당수 있어 Markdown으로 변환해야 합니다. 저는 다음을 사용하려고 합니다:
위 테스터와 제 텍스트 에디터에서는 올바르게 작동합니다. 다음 내용:
Cqwertyuioy - Lasgfdf Sddgfdds (Dsajjsa Vsjsjk Osaskgkk Spfs) "link":http://www.youtube.com/watch?v=aQjkOmzQ8RT
다음과 같이 변환됩니다:
Cqwertyuioy - Lasgfdf Sddgfdds (Dsajjsa Vsjsjk Osaskgkk Spfs) [link](http://www.youtube.com/watch?v=aQjkOmzQ8RT)
하지만 Discourse pg 콘솔에서는 다음을 실행합니다:
update posts set raw = regexp_replace(raw, '"(.*?)"\:(http\S+?(?=\W+(?:$|\s))|http\S+)', E'[\\1](\\2)', 'g');
그리고 다음과 같은 결과가 나옵니다:
Cqwertyuioy - Lasgfdf Sddgfdds (Dsajjsa Vsjsjk Osaskgkk Spfs) [link](http:)//www.youtube.com/watch?v=aQjkOmzQ8RT
(개인정보 비식별화 처리로 인해 죄송합니다.) 따라서 중요한 부분은 다음과 같습니다:
- 올바름:
[link](http://www.youtube.com/watch?v=aQjkOmzQ8RT) - 잘못됨:
[link](http:)//www.youtube.com/watch?v=aQjkOmzQ8RT
SQL 쿼리의 경우 이스케이프 문자 처리 문제와/또는 [] 및 ()의 특수 기능과 리터럴 간의 차이와 관련이 있다고 짐작하고 있지만, 원인을 파악하지 못했습니다. 혹시 아이디어가 있으신가요? 감사합니다!