【问题标题】:Add parenthesis to vim string在 vim 字符串中添加括号
【发布时间】:2013-10-08 00:41:57
【问题描述】:

我在 vim 字符串中使用括号有点麻烦。我只需要在 3 位左右添加一组括号,但我似乎无法找到我想正确放置它们的位置。例如,例如;我必须将它们放在电话号码周围,例如:2015551212

现在我有一个字符串来分隔数字并在它们之间放置一个连字符。例如; 201 555-1212。所以我只需要括号。最终结果应如下所示:(201) 555-1212

我目前的字符串是这样的:s/\(\d\{3}\)\(\d\{3}\)/\1 \2-/g

我该怎么做?

谢谢

【问题讨论】:

    标签: string unix vim parentheses


    【解决方案1】:

    只需在替换中的 \1 周围添加括号即可。

    s/\(\d\{3\}\)\(\d\{3\}\)/(\1) \2-/g
    

    如果你想反过来,把“(800) 555-1212”改成“8005551212”,你可以这样用:

    s/(\(\d\d\d\))\ \(\d\d\d\)-\(\d\d\d\d\)/\1\2\3/g
    

    您可以使用\d\{3\},而不是\d\d\d,但这样输入起来更麻烦。

    【讨论】:

    • 非常感谢您似乎成功了。我也很想知道有人可以如何扭转这个过程。因此,不要使用 s/(\d\{3\})(\d\{3\})/(\1) \2-/g 来获得:(201) 555-1212。你能像这样简单地删除括号、空格和连字符吗? s/(\d\{3\})(\d\{3\})/\1\2/g
    • @ehstudent 删除括号/破折号等你不需要这么复杂的命令,只需:s/\D//g
    • 很高兴它对你有用。你可以考虑accepting my answer。如果您的文件中只有电话号码,Kent 的建议将有助于扭转这一过程。它会删除所有非数字字符。
    • @Markku K 确实如此,虽然肯特斯的建议很有帮助,但不幸的是,它仅适用于仅包含数字/数字的整个文件。我有一个包含字符和数字的文件。所以,我不是要明确如何使用复杂的字符串来反转这个过程。
    • @Markku K 我尝试了您在答案中修改过的命令,效果很好。个人认为虽然使用 \d\{3\} 可以节省时间或压缩它,但使用 \d\d​​\d 似乎是一种更简单的布局。谢谢您的帮助。我很感激。
    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2019-07-13
    • 2011-09-30
    相关资源
    最近更新 更多