如何使用Regex捕获指定文本后的页面剩余内容?
解决捕获“stack overflow”后所有内容的正则问题
嘿,我来帮你搞定这个正则小麻烦~
你之前的正则没得到结果,主要是几个细节写错啦,我给你拆解下:
- 你写的
stack. ?overflow里,. ?的写法不对,如果你是想精准匹配“stack overflow”这个短语,直接写stack overflow就好;如果是想匹配“stack”和“overflow”之间可能有任意字符(比如空格、符号之类),应该写成stack.*?overflow(.*?是非贪婪匹配任意字符)或者stack.*overflow(贪婪匹配)。 - 括号里的
.是匹配任意一个字符加空格,这完全不是你要的“之后所有内容”,应该用.*来匹配任意数量的任意字符(注意默认.不匹配换行符)。
接下来分两种情况给你正确的正则:
1. 捕获“stack overflow”之后到行尾的内容
如果你的文本是单行,或者只想抓当前行后面的内容,用这个正则:
/stack overflow(.*)/
加上g修饰符可以匹配所有符合的地方,m修饰符在这种场景下作用不大,因为m是让^和$匹配行首行尾,不影响.*的行为。
2. 捕获“stack overflow”之后所有内容(包括换行)
如果你的文本有换行,想要抓“stack overflow”之后的所有内容(包括多行),可以用这个:
/stack overflow([\s\S]*)/g
这里[\s\S]表示匹配所有空白和非空白字符,也就是所有内容,包括换行。或者如果你的正则引擎支持s修饰符(比如JavaScript、Python的re模块),也可以写成:
/stack overflow(.*)/gs
s修饰符会让.匹配换行符,这样.*就能覆盖所有内容了。
你可以把这些正则放到regex101里试试,应该就能得到你想要的捕获结果啦~
内容的提问来源于stack exchange,提问作者ToastGhost
相关产品推荐
相关产品推荐

