PCRE正则需求:匹配含target=行末尾的>字符
解决PCRE正则匹配包含
target=行的末尾>问题 直接给你能满足需求的正则表达式,分两种场景:
场景1:只需要选中行尾的>(不捕获其他内容)
使用带多行模式的正向后行断言:
(?m)(?<=^.*target=.*)>$
各部分解释:
(?m):开启PCRE的多行模式,让^匹配每行开头、$匹配每行末尾(默认模式下$只匹配整个字符串的结尾)(?<=^.*target=.*):正向后行断言,确保当前位置之前的内容是一整行包含target=的文本(^.*匹配行首到target=前的内容,target=.*匹配target=到>前的所有内容)>$:匹配行尾的>字符
场景2:需要捕获行尾>同时确认行包含target=(用于替换等操作)
如果需要同时关联整行内容,用这个正则:
(?m)^(.*target=.*)(>)$
此时第二个捕获组$2就是你要的行尾>,第一个捕获组是整行其他内容。
你之前正则的问题
你写的(?<=target=")(.*?)(?=>)是正向前后查找,作用是匹配target="之后、>之前的内容,本身就不会包含>;而且没有限定是行尾的>,也没有确保整行包含target=,所以才会匹配到中间的无关内容。
内容的提问来源于stack exchange,提问作者Matt_PCCI
相关产品推荐
相关产品推荐

