最新消息:这里是最新消息

正则匹配两个关键词之间的内容

总结笔记 benty 697浏览 0评论

不多说,先放上链接
关于正则中间的内容在这里

比如这面这个

<%--Replace1--%>
                                        <ext:ModelField Name="P_ID"></ext:ModelField>
                                        <ext:ModelField Name="CONTRACT_ID"></ext:ModelField>
                                        <ext:ModelField Name="CONTRACT_NAME"></ext:ModelField>
                                        <ext:ModelField Name="CONTRACT_TYPE"></ext:ModelField>
                                        <ext:ModelField Name="CONTRACT_CUSTOMER"></ext:ModelField>
                                        <ext:ModelField Name="CONTRACT_DATE" Type="Date"></ext:ModelField>
                                        <ext:ModelField Name="REMARK"></ext:ModelField>
   <%--Replace1--%>

想要匹配两个标签中间的关键词的正则规则在这里:

<%–startReplace1–%>(?<content>[\s\S]*?)<%–endReplace1–%>

同理,今天想要匹配一个东西,也用到这个了

此外还想说关于fiddler的替换网页内容的东西

具体可以参考这里

我就直接复制粘贴到这里吧

=================================================================================================

有时候调试网页,或研究点东西(大家都懂的…….)的时候需要在第三方页面中注入点js或修改一些代码,来进行自己的测试,下面说下使用方法

首先设置浏览器或远程访问使用fiddler的代理然后打开fiddler选择右边的fiddlerscript选项卡,如果没有这个的话就从菜单打开

blob.png

会提示下载安装后重启就有啦

选择如下图,在页面响应前

blob.png

添加如下代码

复制代码

static function OnBeforeResponse(oSession: Session{
    if (m_Hide304s && oSession.responseCode == 304) {
        oSession["ui-hide"] = "true";
    }
    if (oSession.HostnameIs("www.jd.com")||oSession.uriContains('jd.com') && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
       oSession.utilDecodeResponse();
        oSession.utilReplaceInResponse('</head>','<script>alert(1);</script></head>');
    }
}

判断如果是京东或是请求url中包含jd.com的响应就在head前面添加一个js弹窗

如果想替换更多的内容可以使用下面的正则方法来查找替换字符串

// 解码响应内容
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
// 使用正则进行替换
var oRegEx=/<\/head>/ig;
oBody = oBody.replace(oRegEx, "<script>alert(1);</script></head>");
//设置新的响应内容
oSession.utilSetResponseBody(oBody);

最后注意修改后要点保存才会生效,点击如下图所示的保存,按ctrl+s键是无效的,

blob.png

直接判断如果请求是指定的文件就用本地的一个文件来响应

复制代码

static function OnBeforeResponse(oSession: Session{
    if (oSession.uriContains("header.js")) {
        oSession["x-replywithfile"] ="E:/mod.js";
    }
}

如果请求url中包含header.js就直接用本地mod.js文件来响应

 

 

====================

正则匹配题的序号

正文如下:

1.根据《关于金融类企业挂牌融资有关事项的通知》,下列公司中,全国股转系统目前可受理其挂牌申请的是(	)。
A.商业保理公司
B.融资租赁公司
C.典当公司
D.私募基金管理公司
E.小额贷款公司
2.根据《上市公司股东大会规则》(2016年修订),下列关于上市公司股东大会征集投票权的说法,正确的是(	)。
A.董事会征集股东投票权应当向被征集人充分披露具体投票意向等信息,独立董事征集股东投票权时可不披露具体投票意向,并拥有最终投票决定权
B.公司董事会、独立董事可以公开征集股东投票权;符合条件的股东可以非公开征集股东投票权,但不得公开征集投票权
C.公司不得对征集投票权提出最低持股比例限制
D.征集人可以以有偿形式征集股东投票权
3.根据《创业板上市公司证券发行管理暂行办法》,创业板上市公司非公开发行股票可自行销售的情形是(	)。
A.发行对象为上市公司控股股东的参股企业
B.发行对象为上市公司的销售人员
C.发行对象为原前10名机构股东
D.发行对象为原前10名自然人股东

如果我们想要提取每一个试题中间的内容,就需要用正则表达式来进行提取

cont=re.compile(‘[\d]+\.(.*?)(?=[\d]+\.|$)’, re.DOTALL)
# 上面是正则提取1.到2.之间所有的内容,但是不包括最后的2.方便用来提取下一个内容.
everyti=cont.findall(contents) # 返回每一个试题和选项
k=Sql(“wx_tiku”) #初始化数据库的表对象
for oneti in everyti:#遍历每一个试题题目和选项
    try:
        title=re.search(r”(.*)\nA\.”,oneti).group(1)
        option=re.search(r”\nA\..*”,oneti,re.DOTALL).group()
        option=option.strip() #去除两边换行
        sql=”insert into wx_tiku (id,wx_title,wx_options,wx_subject) values (NULL,%s,%s,%s);”
        k.execute(sql,title,option,”2019年6月保荐代表人考试《投资银行业务》”)
    except:
        traceback.print_exc()
        pass
    finally:
        k.close()

 

 

 

转载请注明:稻香的博客 » 正则匹配两个关键词之间的内容

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址