我想制作一个匹配任何由四点或更多点成功的东西的正则表达式:
asdf.......
Run Code Online (Sandbox Code Playgroud)
会匹配asdf.
我尝试过:
.+?(?=\.{4,})
Run Code Online (Sandbox Code Playgroud)
但它只丢弃最后四个点,所以匹配asdf....
怎么做到呢?
正则.+?(?=\.{4,})表达式匹配asdfin asdf.......,因为它在值后面找到 4 个或更多点,但由于 位于\.{4,}非消耗模式内,因此.......仍然需要检查,并且.该子字符串中的第一个再次匹配,因为.+?匹配除换行符,但尽可能少。第二个和第三个.s 也会发生同样的情况,因为它们后面都跟有 4 个以上的逗号。
您可以做的就是使点匹配部分消耗并捕获.+?(然后您需要的值将位于组 1 中):
(.+?)\.{4,}
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
这里,(.*?)是一个匹配除换行符*之外的0 个以上字符(使用而不是匹配 1 个或更多)的捕获组,并且将匹配并消耗 4 个或更多字符(不允许在点内检查匹配)。+\.{4,}.