我正试图编写一个大的python/bash脚本,将我的html/css模型转换为shoppify主题。 这个过程中的一个步骤是更改所有脚本源。例如:
<script type="text/javascript" src="./js/jquery.bxslider.min.js"></script>
变成
^{pr2}$以下是我目前所掌握的情况:
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'
到目前为止,我有两个问题:
我用的一些反斜杠字符来转义 我的正则表达式中的引号显示在输出中。
我的捕获组正在捕获整个原始源字符串,但是 我只需要最后一个“/”之后的结果
回答: 根据Martijn Pieters的建议,我查过了?正则表达式运算符,并且想出了这个解决方案,完美地解决了我的问题。另外,对于替换表达式,我将它封装在双引号中,而不是单引号,并转义了双引号,最后去掉了不必要的反斜杠。谢谢各位!在
re.sub( r'src=".+?([^/]+?\.js)"', "src=\"{{ '\\1' | asset_url }}\"", test, flags=re.MULTILINE )
在不引起某些人的愤怒的情况下,您可以将其视为xml。在
给出:
^{pr2}$此后,xml文档可能会有用;这完全取决于HTML有多漂亮和格式良好。在
您的表达式工作得很好;Python只是向您展示了一个字符串文本,在这里您必须转义引号才能将其重新用作Python字符串。在
如果打印值,则不会发生此类转义:
您可以使用}限定符非贪婪;匹配最小值而不是最大值。您还可以将任何而不是的内容匹配为引号:
^{pr2}$?
使+
、*
和{这会更好地约束正则表达式的这一部分;
[^"]
匹配任何一个双引号的字符。在在指定正则表达式模式时,通常使用python原始字符串文本(
r''
)是个好主意,这样可以省去很多关于哪些内容需要转义,哪些内容不需要转义的麻烦。使用原始字符串文本,可以将替换模式简化为:最后一行:
相关问题 更多 >
编程相关推荐