壮壮规则
https://raw.githubusercontent.com/ydzydzydz/Rules/master/Surge/conf/zhuangzhuang/zhuangzhuang.conf
import sys
print sys.argv[0]
sys.argv[0]是python脚本的名字;
下面的例子是一个用来提取文本log.txt中含有匹配字符串的文本行,匹配字符串的字符串当作参数传递给python脚本。
#!/usr/bin/env python
import sys
import re
f = open(“log.txt”, “rb”)
info = open(“info.txt”, “ab”)
for line in f.readlines():
if re.search(sys.argv[1], line):
info.write(line)
info.close()
f.close()
Python文件内部接收参数用:
sys.argv
sys.argv[0]:是python脚本名
sys.arg[1]及以后各项:是接收的参数
#! /bin/python
import sys
for arg in sys.argv:
print arg
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
test.py
import sys
print “脚本名:”, sys.argv[0]
for i in range(1, len(sys.argv)):
print “参数”, i, sys.argv[i]
>>>python test.py hello world
脚本名:test.py
参数 1 hello
参数 2 world
python中使用命令行选项:
例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。
要求该脚本满足以下条件:
1.通过-i -o选项来区别参数是输入文件还是输出文件.
>>> python convert.py -i inputfile -o outputfile
2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息
>>> python convert.py -h
getopt函数原形:
getopt.getopt(args, options[, long_options])
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], “hi:o:”)
input_file=””
output_file=””
for op, value in opts:
if op == “-i”:
input_file = value
elif op == “-o”:
output_file = value
elif op == “-h”:
usage()
sys.exit()
代码解释:
a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
b) “hi:o:”: 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。
当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个”:”号。
所以”hi:o:”就表示“h”是一个开关选项;
“i:”和”o:”则表示后面应该带一个参数。
c) 调用getopt函数。函数返回两个列表:opts和args。
opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。
opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串”。
getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)
长选项格式举例:
–version
–file=error.txt
让一个脚本同时支持短选项和长选项
getopt.getopt(sys.argv[1:], “hi:o:”, [“version”, “file=”])
1:5种URL规则的定义及使用场景
当您设置页面,页面组和转化时,Ptengine支持5种URL规则:包含、头匹配,尾匹配,完全匹配,正则表达式。
包含:任何包含您特定字符串的的URL。例如,如果您指定“abc.com”使用“包含”规则:那么“abc.com.contact”等类似的URL将使用此规则。
头匹配:从字符串开头的第一个字符一直匹配到您特定的最后一个字符,也许还有其他剩余的字符,但是遵循相同的规则。
例如,特定访问者访问的网址可能是 http://www.example.com/checkout.cgi?page=1&id=9982251615, 在这一情况下,其他每位用户的 id 都会不同。您只要使用 http://www.example.com/checkout.cgi?page=1 作为目标网址,并选择”头匹配”作为匹配类型,仍可以匹配此页。
尾匹配:从字符串结尾的最后一个字符一直匹配到您指定的第一个字符,也许还有其他剩余的字符,但是遵循相同的规则。
例如,特定访问者访问的网址可能是“http://www.example.com/checkout.cgi?page=1&id=9982251615,在这一情况下,您希望使用“&ID = 9982251615”为目标字符,请选择”尾匹配”作为匹配类型。
完全匹配:从头到尾完全匹配网址中的每一个字符。
正则表达式,正则表达式会将特殊字符视为通配符,这是一种非常灵活的匹配方式。如果网站上同一网页网址的主体或后续参数会发生变化,或者两者都会发生变化,这个方式就相当实用。
2:正则表达式的语法
其实, 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种匹配逻辑。
正则表达式字符主要包含:通配符、定位符、分组、其它。
通配符,可以用来代替一个或多个真正字符,以便根据您指定的参数变化的所有实例创建一个匹配。 下面是一些经常使用通配符说明。
定位符 创建基于固定点的匹配,通常在开始或结束的位置。
分组

注:正则表达式越简单越好,以便于您和同事接下来的方便使用。
3:正则表达式的常见用法
正则表达式的常见用法
1.前方域名完全匹配 ,尾部带/或带?加参数
正则:^https:\/\/www.ptmind.com($|\/$|\/\?.*)
能匹配以下页面:
https://www.ptmind.com
https://www.ptmind.com/
https://www.ptmind.com/?WT.mc_id=xxxx
不能匹配以下页面:
https://www.ptmind.com/abc
2.头部匹配http或者https协议,并且匹配多个子域名
正则:^(http|https):\/\/(sh|bj|tj).ptmind.com
匹配以下页面:
http://sh.ptmind.com
http://bj.ptmind.com/abc
http://tj.ptmind.com
https://sh.ptmind.com
https://bj.ptmind.com/?WT.mc_id=xxxx
https://tj.ptmind.com
不能匹配以下页面:
https://www.ptmind.com
3.指定头部匹配规则
正则:^http:\/\/ptmind\.com\/price.*$
匹配以下页面:
http://ptmind.com/price/page
http://ptmind.com/price?sid=23fwe3r2&vid=345666
http://ptmind.com/price#top
http://ptmind.com/price
4.匹配 http 或 https开头链接,也可匹配不包含www或将www替换成其它由字母数字组合的子域名的情况
正则:^(http|https):\/\/[a-z0-9]*[.]*ptmind.com\/service\/mng_units\/lp03$
匹配以下页面:
http://www.ptmind.com/service/mng_units/lp03
https://www.ptmind.com/service/mng_units/lp03
http://ptmind.com/service/mng_units/lp03
http://a123.ptmind.com/service/mng_units/lp03
https://ptmind.com/service/mng_units/lp03
5.匹配末尾数据必须在(6984604到6984783之间)
正则:^http:\/\/ptmind.com\/detail\/id=6984([6][1-9][0-9]|[6][0][4-9]|[7][0-7][0-9]|[7][8][0-3])$
匹配以下页面:
http://ptmind.com/detail/id=6984604
http://ptmind.com/detail/id=6984783
不能匹配以下页面:
http://ptmind.com/detail/id=6984784
http://ptmind.com/detail/id=6984603
若您依然需要帮助,可以联系我们的在线客服寻求帮助。
4:正则表达式的校验工具
引用:
https://github.com/mzz2017/lkl-haproxy
# # for centos bash <(curl -Ls https://github.com/mzz2017/lkl-haproxy/raw/master/lkl-haproxy-centos-nocheckvirt.sh) # for debian bash <(curl -Ls https://github.com/mzz2017/lkl-haproxy/raw/master/lkl-haproxy-debian-nocheckvirt.sh)