用于移除第一个点之后所有点的正则表达式
正则表达式实现仅保留第一个点、移除后续所有点
核心方案(支持后行断言的语言:JS、Python 3.7+、Java等)
使用正向肯定后行断言精准匹配第一个点之后的所有点,直接替换为空字符串即可:
正则表达式:
/(?<=^[^.]*\.)\./g
规则解释
(?<=^[^.]*\.):后行断言,确保当前匹配的点前面已经出现过第一个点(^[^.]*\.匹配从字符串开头到第一个点的全部内容)\.:匹配需要移除的目标点g:全局修饰符,确保替换所有符合条件的点
代码示例(JavaScript)
const input = "1.2.3.4.5.6"; const output = input.replace(/(?<=^[^.]*\.)\./g, ''); console.log(output); // 输出:"1.23456"
兼容方案(不支持后行断言的环境)
通过分组捕获拆分字符串,保留第一个点及之前的内容,再移除后续部分的所有点:
正则表达式:
^(.*?\.)(.*)$
替换逻辑
保留第一个分组($1),将第二个分组($2)中的所有点替换为空后拼接。示例(Python):
import re input_str = "1.2.3.4.5.6" result = re.sub(r'^(.*?\.)(.*)$', lambda match: match.group(1) + match.group(2).replace('.', ''), input_str) print(result) # 输出:"1.23456"
场景验证
- 输入无点:
"test123"→ 输出"test123"(无匹配项,不修改原内容) - 输入单个点:
"x.y"→ 输出"x.y"(无后续点,不做替换) - 输入多段点:
"hello.world.how.are.you"→ 输出"hello.worldhowareyou"
内容的提问来源于stack exchange,提问作者howard wolowitz
相关产品推荐
相关产品推荐

