我使用 vim 开发一个 Go 脚本,我打算将 ()() 替换为 (),所以我使用了%s/()()/()/g
,然后我需要帮助来理解它的结果:
()p()a()c()k()a()g()e() ()s()u()b()
()
()i()m()p()o()r()t()(()
() ()"()f()m()t()"()
())()
()f()u()n()c() ()S()u()b()F()u()n()(())() (){()
() ()f()m()t().()P()r()i()n()t()l()n()(()"()i()n() ()S()u()b()F()u()n()"())()
()}()
()f()u()n()c() ()s()u()b()F()u()n()(())() (){()
() ()f()m()t().()P()r()i()n()t()l()n()(()"()i()n() ()s()u()b()F()u()n()"())()
()}()
似乎在每个字符(甚至是空白字符)周围都插入了一个 ()
括号在正则表达式中具有特殊含义。你必须逃脱他们:
你的正则表达式会发生什么:
()
代表捕获组,在这种情况下,它什么也不捕获,因为括号内没有任何内容。您有两个捕获组什么都不捕获,都匹配空字符串。然后你用一对括号替换所有这些空字符串。这就是为什么你最终在字符之间有一对括号。学习正则表达式的有用网站