一,懒惰模式下尽量延后匹配的起始位置(HTML标签)

需求:

匹配结果四:<div>test1</div>bb<div>test2</div>cc

这里采用的是非贪婪模式,前面的“<div>.*?</div>”仍然是匹配到“<div>test1</div>”为止,此时后面的“cc”无法匹配成功,要求“<div>.*?</div>”必须继续向右尝试匹配,直到匹配内容为“<div>test1</div>bb<div>test2</div>”时,后面的“cc”才能匹配成功,整个表达式匹配成功,匹配的内容为“<div>test1</div>bb<div>test2</div>cc”,其中“<div>.*?</div>”匹配的内容为“<div>test1</div>bb<div>test2</div>”。可以看到,在“整个表达式匹配成功”的前提下,非贪婪模式才真正的影响着子表达式的匹配行为,如果整个表达式匹配失败,非贪婪模式无法影响子表达式的匹配行为。 

如上我要匹配<div>test2</div>cc怎么写?不要告诉我bb<div>.*?</div>cc。我的前面不知道是啥?

我想只匹配上<div>test2</div>cc求教高手?

(?<=.+)<div>.*?</div>cc
//先用.+尽量多地匹配走不相关的前导部分

二,按HTML标签匹配内容

需求:

———-<h1 dir=”ltr” class=”pt-000022″><span xml:space=”preserve” class=”pt-000023″>1  </span><a id=”_Toc535676378″ class=”pt-000013″></a><span lang=”zh-CN” class=”pt-a5-000024″>版本信息</span></h1>

<h2 dir=”ltr” class=”pt-000025″><span xml:space=”preserve” class=”pt-000026″>1.1  </span><a id=”_Toc114025877″ class=”pt-000013″></a><a id=”_Toc129058109″ class=”pt-000013″></a><a id=”_Toc535676379″ class=”pt-000013″></a><span lang=”zh-CN” class=”pt-a5-000027″>版fdsfds号</span></h2>fdsffdsfds———————<h1 dir=”ltr” class=”pt-000022″><span xml:space=”preserve” class=”pt-000023″>3  </span><a id=”_Toc535676386″ class=”pt-000013″></a><span lang=”zh-CN” class=”pt-a5-000024″>软件fdsfds明</span></h1>ffffdsfdsf———<h1>

想要的匹配的内容是第一个<h1 XX>

开始(包括它自身)到下一个<h1>标签开始(不包括<h1>)中间的内容

如上面匹配正确结果是

<h1 dir=”ltr” class=”pt-000022″><span xml:space=”preserve” class=”pt-000023″>1  </span><a id=”_Toc535676378″ class=”pt-000013″></a><span lang=”zh-CN” class=”pt-a5-000024″>版本信息</span></h1>

<h2 dir=”ltr” class=”pt-000025″><span xml:space=”preserve” class=”pt-000026″>1.1  </span><a id=”_Toc114025877″ class=”pt-000013″></a><a id=”_Toc129058109″ class=”pt-000013″></a><a id=”_Toc535676379″ class=”pt-000013″></a><span lang=”zh-CN” class=”pt-a5-000027″>版fdsfds号</span></h2>fdsffdsfds———————

<h1 dir=”ltr” class=”pt-000022″><span xml:space=”preserve” class=”pt-000023″>3  </span><a id=”_Toc535676386″ class=”pt-000013″></a><span lang=”zh-CN” class=”pt-a5-000024″>软件fdsfds明</span></h1>ffffdsfdsf———

Regex.Matches(x,"<h1.*?(?=(<h1|$))",RegexOptions.Singleline)

三,怎么字符串截取当中所有( )中的内容 用,相隔

需求:

RT

a = dsdsd(123)dsdsd(456)dsds(789)

b = 123,456,789

a截取成b

string.Join(",", Regex.Matches(a, "\((.*?)\)").Cast<Match>().Select(m=>m.Groups[1].Value))

四,正则替换去除额外后缀

需求:

采集别人的图片网站内容
得到的结果 

合内部场地,对建筑遮挡,展示整体格调,体现海鸥主题。
</div><div style=”text-align: center;”>
<div class=”img-xxx-con”>
<img  src=”user/tupian/2019-12-13/77356397.jpg?x-oss-process=image/resize,w_760” source_src=”user/tupian/2019-12-13/77356397.jpg” novip=”0″  alt=”5deed1f254c31″ title=”5deed1f254c31″ data_w=”1080″ data_h=”608″/ onerror=”imgerror(this)”/>
<img  src=”user/tupian/2019-12-13/77356397.jpg?x-oss-process=image/resize,w_760” source_src=”user/tupian/2019-12-13/77356397.jpg” novip=”0″  alt=”5deed1f254c31″ title=”5deed1f254c31″ data_w=”1080″ data_h=”608″/ onerror=”imgerror(this)”/>

</div></div><div>杭州旭辉·国滨府示范区景观实景图</div>
<div style=”text-align: center;”><div class=”img-xxx-con”>

红色部分是会变的 每个图片都不一样 通过什么正规表达式或者其他办法能把字符串里面的尾巴批量去掉吗

Regex.Replace(strOld, @"(?<=jpg)\?.*?(?="")", "");

五,正规表达式 去除 title alt 标题内容

需求:

<img title=”1575341105821920.jpg” alt=”微信图片_20191203104459.jpg” src=”user/tupian/2019-12-18/33550541.jpg”/></p><p><img title=”1575341263791534.jpg” alt=”微信图片_20191203104501.jpg” src=”user/tupian/2019-12-18/38784367.jpg”/>

采集到别人的图片 里面 每一张图都有这个 title  alt  动态的 。。怎么替换掉?
感谢

Regex.Replace(input, @"(alt|title)=\"".*?\""", "")

六,NotePad用正则表达式,怎么将WIDTH=”数字”统一替换成WIDTH=”255″

原始内容:

<?xml version="1.0"?><DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="TICKETCODE" fieldtype="string" WIDTH="12"/><FIELD attrname="NAME" fieldtype="string" WIDTH="19"/><FIELD attrname="SURNAME" fieldtype="string" WIDTH="32"/><FIELD attrname="GIVENNAME" fieldtype="string" WIDTH="32"/><FIELD attrname="GENDER" fieldtype="string" WIDTH="1"/><FIELD attrname="IDTYPE" fieldtype="string" WIDTH="1"/><FIELD attrname="IDNUMBER" fieldtype="string" WIDTH="44"/><FIELD attrname="DATEOFBIRTH" fieldtype="string" WIDTH="10"/><FIELD attrname="NATION" fieldtype="string" WIDTH="32"/><FIELD attrname="DATEOFEXPRY" fieldtype="string" WIDTH="10"/><FIELD attrname="FG" fieldtype="string" WIDTH="1"/><FIELD attrname="CHECKA" fieldtype="string" WIDTH="1"/><FIELD attrname="CHECKB" fieldtype="string" WIDTH="1"/><FIELD attrname="AGATECHECKINTIME" fieldtype="string" WIDTH="19"/><FIELD attrname="BGATECHECKINTIME" fieldtype="string" WIDTH="19"/><FIELD attrname="AIRWAYS" fieldtype="string" WIDTH="32"/><FIELD attrname="FLIGHTNUMBER" fieldtype="string" WIDTH="32"/><FIELD attrname="COMEFROM" fieldtype="string" WIDTH="32"/><FIELD attrname="ISSUINGCOUNTRY" fieldtype="string" WIDTH="32"/><FIELD attrname="ISSUEDAT" fieldtype="string" WIDTH="32"/><FIELD attrname="BIRTHPLACEPINYIN" fieldtype="string" WIDTH="32"/><FIELD attrname="IDNOTAIWAN" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/><METADATA><FIELDS><FIELD attrname="TICKETCODE" fieldtype="string" WIDTH="12"/><FIELD attrname="NAME" fieldtype="string" WIDTH="19"/><FIELD attrname="SURNAME" fieldtype="string" WIDTH="32"/><FIELD attrname="GIVENNAME" fieldtype="string" WIDTH="32"/><FIELD attrname="GENDER" fieldtype="string" WIDTH="1"/><FIELD attrname="IDTYPE" fieldtype="string" WIDTH="1"/><FIELD attrname="IDNUMBER" fieldtype="string" WIDTH="44"/><FIELD attrname="DATEOFBIRTH" fieldtype="string" WIDTH="10"/><FIELD attrname="NATION" fieldtype="string" WIDTH="32"/><FIELD attrname="DATEOFEXPRY" fieldtype="string" WIDTH="10"/><FIELD attrname="FG" fieldtype="string" WIDTH="1"/><FIELD attrname="CHECKA" fieldtype="string" WIDTH="1"/><FIELD attrname="CHECKB" fieldtype="string" WIDTH="1"/><FIELD attrname="AGATECHECKINTIME" fieldtype="string" WIDTH="19"/><FIELD attrname="BGATECHECKINTIME" fieldtype="string" WIDTH="19"/><FIELD attrname="AIRWAYS" fieldtype="string" WIDTH="32"/><FIELD attrname="FLIGHTNUMBER" fieldtype="string" WIDTH="32"/><FIELD attrname="COMEFROM" fieldtype="string" WIDTH="32"/><FIELD attrname="ISSUINGCOUNTRY" fieldtype="string" WIDTH="32"/><FIELD attrname="ISSUEDAT" fieldtype="string" WIDTH="32"/><FIELD attrname="BIRTHPLACEPINYIN" fieldtype="string" WIDTH="32"/><FIELD attrname="IDNOTAIWAN" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/></DATAPACKET>
Regex.Replace(input, "(?<=WIDTH=\")\d+", "255")
//(?<=WIDTH="):逆序环视,查找条件为左边内容是WIDTH=",同时这一匹配条件并不加入查找结果(查找结果不包含 WIDTH=);
//\d+:\d等效于[0-9],最长限度地匹配数字,直到出现非数字为止。
最终的匹配效果就是尽可能长地匹配WIDTH="后面的数字,然后把这个数字替换为255。