正则表达式的问题
查找HTML字符串中所有子串,并且保证子串不在HTML标签内,使用这个正则表达式时(?<!\\<)(?:" + subStr + ")(?!\\>),HTML标签内有两个以上的相同子串会匹配到HTML标签内的子串,如何改进这个正则表达式比如这样的<p我r我>Hello, <b>我world</b>!</p>如果第一个标签内有两个我字,就匹配到标签内了我也不懂 问AI的
你所描述的需求是在HTML字符串中查找所有子串,同时确保这些子串不在HTML标签内。你提供的正则表达式 "(?<!\<)(?:" + subStr + ")(?!\>)" 确实可以匹配不在HTML标签内的子串,但是会出现你提到的问题,即当HTML标签内有两个以上相同的子串时,会匹配到HTML标签内的子串。
为了改进这个正则表达式,你可以考虑使用负向前瞻和负向后顾来确保子串不在HTML标签内。以下是一个可能的改进版本的正则表达式:
javascript
var regex = new RegExp("(?![^<>]*>)" + subStr + "(?![^<]*<)", "g");
这个正则表达式使用了 "(?![^<>]>)" 来确保子串不在任何HTML标签内,而 "(?![^<]<)" 则确保子串不在任何封闭的HTML标签内。通过这样的正则表达式,你可以在HTML字符串中匹配所有不在HTML标签内的子串。
有点不太懂你的意思标签内有两个以上的相同子串会匹配到HTML标签内的子 import re
text = '<p我r我>Hello, <b>我world</b>!</p>'
print(re.findall('>([^<]*)',text))
# 输出['Hello, ', '我world', '!', '']
这样可以吗? 衍东子 发表于 2023-12-7 08:06
我也不懂 问AI的
你所描述的需求是在HTML字符串中查找所有子串,同时确保这些子串不在HTML标签内。你提 ...
牛,感觉AI理解的比人还好。{:1_937:} ilpj 发表于 2023-12-7 08:44
牛,感觉AI理解的比人还好。
其实就是匹配标签内的文本吧 用Regex Buddy测试表达式吧,这软件贼好用 (?<!<[^>]+)your_substring(?![^<]*>) 问AI正则问题直接出内容,出最终匹配的,让它思考解决。
页:
[1]