내 HTML/CSS 모형을 Shopify 테마로 변환하는 큰 파이썬/bash 스크립트를 작성하려고합니다. 이 프로세스의 한 단계는 모든 스크립트 소스를 변경하는 것입니다. 예를 들어 : 밖으로파이썬에서 html 스크립트 요소 소스를 정규 표현식으로 바꾸기
import re
test = """
<script type="text/javascript" src="./js/jquery-1.8.3.min.js"></script>
<!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>-->
<script type="text/javascript" src="./js/ie-amendments.js"></script>
<script type="text/javascript" src="./js/jquery.bxslider.min.js"></script>
<script type="text/javascript" src="./js/jquery.colorbox-min.js"></script>
<script type="text/javascript" src="./js/main.js"></script>
"""
out = re.sub('src=\"(.+)\"', 'src="{{ \'\\1\' | asset_url }}"', test, flags=re.MULTILINE)
out
인쇄 지금까지이 문제가
'\n <script type="text/javascript" src="{{ \'./js/jquery-1.8.3.min.js\' | asset_url }}"></script>\n <!--<script src="{{ \'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript\' | asset_url }}"></script>-->\n <script type="text/javascript" src="{{ \'./js/ie-amendments.js\' | asset_url }}"></script>\n <script type="text/javascript" src="{{ \'./js/jquery.bxslider.min.js\' | asset_url }}"></script>\n <script type="text/javascript" src="{{ \'./js/jquery.colorbox-min.js\' | asset_url }}"></script>\n <script type="text/javascript" src="{{ \'./js/main.js\' | asset_url }}"></script>\n'
:
<script type="text/javascript" src="./js/jquery.bxslider.min.js"></script>
는
여기<script type="text/javascript" src="{{ 'jquery.bxslider.min.js' | asset_url }}"></script>
내가 지금까지 무엇을 가지고이된다
내 정규식 내에서 단일 인용 부호를 이스케이프하는 데 사용하는 일부 백 슬래시 문자가 출력에 표시됩니다.
이- 내 캡처 그룹은 전체 원본 문자열을 캡처
하지만 난 그냥 지난 다음에 오는 것을 필요
"/"
는 답변 : 마티 피에 터스 도움이 제안 당 , 나는 체크 아웃 ? 정규식 연산자, 그리고 내 문제를 완벽하게 해결이 솔루션을 내놓았다. 또한, 대체 표현식을 위해, 나는 그것을 단식과 반대로 큰 따옴표로 묶었 고, double을 이스케이프 처리하여 불필요한 백 슬래시를 제거했습니다. 고마워요!
re.sub(r'src=".+?([^/]+?\.js)"', "src=\"{{ '\\1' | asset_url }}\"", test, flags=re.MULTILINE)
* Sigh * http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Cfreak
@Cfreak : 제한된 경우 일 수 있습니다. 스크립트 태그는 다른 태그를 포함하지 않으며'src' 속성 매칭은 제한적이고 규칙적입니다. 여기 무릎을 꿇을 필요가 없습니다. –
@Cfreak : 실제로 HTML을 구문 분석하기 위해 regexes가 좋지 않다는 것을 알지 못했습니다. 링크 주셔서 감사합니다 - 그것은 매우 유익했습니다! –