RE: [종료] 안피곤 천하제일 코딩 대회를 개최합니다.

You are viewing a single comment's thread from:

[종료] 안피곤 천하제일 코딩 대회를 개최합니다.

in kr •  7 years ago  (edited)

저도 정규식으로 해볼려는데 쉽지 않네요.ㅠ

Posted using Partiko Android

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  7 years ago (edited)

해결 했습니다.

views.py 에서 아래와 같이 삽입하면 됩니다.


replaced = re.sub( r'https?://([a-zA-Z0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9][a-zA-Z0-9_-]+){1,2}(/[a-zA-Z0-9][a-zA-Z0-9_-]*)+)[.]( p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)', r'< img src="http://\1.\4">', post['body'] )


post[ 'body' ] = replaced

감사합니다. 잘작동합니다. 그리고 @apmmh님 제가 살짝 수정했어요~

replaced = re.sub(r'(^https?://([a-zA-Z0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9][a-zA-Z0-9_-]+){1,2}(/[a-zA-Z0-9][a-zA-Z0-9_-]*)+)[.](png|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF))', r'<img src="\1">', post['body'])
  ·  7 years ago (edited)

일부 사진 파일의 경우 % 나 . 이 파일명에 들어가는 경우가 있더군요...
replaced = re.sub( r'https?://([a-zA-Z0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9][a-zA-Z0-9_-]+){1,2}(/[a-zA-Z0-9][^\s]*)+)[.](p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)', r'

< img src="http://\1.\4">
', post['body'] )

위와 같이 수정해봤습니다.

테스트할 페이지는 /@appics/appics-update-or-sneak-peek-into-the-appics-app-become-a-tester-now/

입니다.

수정해주셨네요. 감사합니다.
그리고 정규식 코드는 열심히 봐도 분석이 안되네요.ㅎㅎ

  ·  7 years ago (edited)

해도 해도 예외 케이스들이 발생하는거 같습니다 ㅎㅎ

replaced = re.sub( r'[^\ "\ '\ /]https?:\ /\ /([a-zA-Z0-9][a-zA-Z0-9_-]([.][a-zA-Z0-9][a-zA-Z0-9_-]){1,2}(\ /[a-zA-Z0-9][^\s]*)+)[.](p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)', r'>< center>< img src="http://\1.\4">', post['body'] )

좀 더 다듬은 버전입니다.

또 수정해주셨네요. 감사합니다. 이걸로 적용해 놓고 잘나오는지 지켜 봐야겠어요~ㅎㅎ

  ·  7 years ago (edited)

replaced = re.sub(
r'>https?:\ /\ /([a-zA-Z0-9][a-zA-Z0-9_-] * ([.][a-zA-Z0-9][a-zA-Z0-9_-] * ){1,2}(\ /[a-zA-Z0-9][^\s]*)+)[.](p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)'
, r'> < img src="http://\1.\4" align="center" alt=""> '
, post['body'] )


replaced = re.sub( r'[\s]https?:\ /\ /([a-zA-Z0-9][a-zA-Z0-9_-] * ([.][a-zA-Z0-9][a-zA-Z0-9_-] * ){1,2}(\ /[a-zA-Z0-9][^\s]*)+)[.](p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)', r' < img src="http://\1.\4" align="center" alt=""> ', replaced )

post[ 'body' ] = replaced

유튜브 비디오 링크 말고는 이제 잘되는거 같아요 ㅜㅜ 그리고 상금 감사합니다! ^^

와~! 고생하셨어요. 정규식이 더 복잡해졌네요.ㅋ
대단하십니다.

그리고 이미지URL 중에 https://ipfs.busy.org/ipfs/QmWjSVnXpxTa36rYp4UauZRctqic2VPGMEqXuFToJXXTb6 이런 URL도 있네요. Busy.org 에서 이미지를 업로드하면 이렇게 생성되는것 같아요.
이것도 정규식으로 해볼려고 했는데 어렵네요.ㅋ 확장자가 없어서 정규식으로 가능한지도 잘모르겠어요.

이 글입니다.
https://steemit.com/gomdory/@gomdory/gomdory-2018-10-09

음.. 이 경우에는 alt 속성을 이용해서 해볼 수 있을런지 고민좀 해봐야 겠어요.

음... 이미지 확장자 때문에 comment 태그를 달아도 스트링으로 안나오는군요...

sub 메소드의 두번째 인자로

'r< img src = "http://\1.\4">'


이렇게 하는게 핵심입니다. \1 \2는 re 모듈에서 정규식표현을 찾은 후에 grouping 과정을 거치는데 \1 요게 내가 찾은 패턴의 첫번째 정규표현 부분을 나타냅니다. \4는 여기서 이미지 확장자를 의미하구요.

조금 더 욕심 내면 실제 steemit 처럼 중첩 댓글 출력과 post_list 출력 시 이미지나 링크 태그가 나오는 부분에서 row 범위를 벗어나게 출력되는 문제가 있는데.. 이것도 해결하면 더 예쁜 블로그가 될거 같아요!

리스트에서는 URL을 공백문자로 치환해봐야겠어요.ㅋ