如何使用RegEx捕获<tag>标签中的所有数字与单词内容?
正则匹配全部标签内容的解决方法
问题根源在于你用的正则 <tag>(.*?)<tag> 是匹配完整的 <tag>内容<tag> 片段,每完成一次匹配后,正则引擎的指针会跳到该片段的结尾(第二个 <tag> 后方),直接跳过了中间的内容(比如 abc)——因为下一个 <tag> 已经被前一次匹配的结尾“越过”,自然抓不到。
要捕获所有标签内的内容,用正向前后断言就行,这种方式不会“消耗”<tag>标签本身,让引擎能连续匹配每一段目标内容:
(?<=<tag>)(.*?)(?=<tag>)
正则说明:
(?<=<tag>):正向后顾断言,确认当前位置前方是<tag>(.*?):非贪婪匹配标签内的任意内容(?=<tag>):正向前瞻断言,确认当前位置后方是<tag>
开启全局匹配(添加 g 标志)后,这个正则就能捕获到所有目标内容:123、abc、efg、456。
内容的提问来源于stack exchange,提问作者Chenyu Wang
相关产品推荐
相关产品推荐

