【问题标题】:Begin each new line with a character (unless it already begins with that character)每个新行都以一个字符开始(除非它已经以该字符开始)
【发布时间】:2009-12-14 22:26:00
【问题描述】:

我有一些配置文件,每个文件都有数百行数据。

我想以井号 ('#') 开始每一行(回车后)除非它已经以井号开始。我不想进行查找+替换,因为我有文件的其他注释部分不是行首。

例如,这个:

Some data #some comment
Some more data #some other comment
Even more data
#some line comment

会变成:

#Some data #some comment
#Some more data #some other comment
#Even more data
#some line comment

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    使用搜索 -> 替换功能,但将其置于正则表达式模式并匹配行首:

    Find What:    ^([^#].*)
    Replace With: #\1
    

    这将匹配一行及其中的所有内容,将其放入\1,然后将其替换为#,后跟放入\1(整行)中的内容。

    【讨论】:

    • 谢谢!这在我单击“替换”时有效,但是当我单击“全部替换”时它对我大喊:“搜索的正则表达式格式错误”。有什么想法吗?
    • 嗯。我只是自己尝试过,Replace All 工作正常。您使用的是哪个版本的 NPP?
    • 如果我想对文件的一部分(在一个块上,而不是在整个文档上)执行此操作怎么办?
    • 选择文件的那个部分,然后使用选项仅替换作为查找/替换对话框一部分的选择。
    【解决方案2】:

    尝试用这个正则表达式查找和替换(在正则表达式模式下):

    ^([^#])
    

    并将所有内容替换为#\1。 (根据 Dav 的反馈进行了编辑 - 谢谢!)

    【讨论】:

    • 该死,只是不够快:)
    • 你的正则表达式只有一个问题 - 它会替换行上的第一个字符,而不是仅仅在前面加上 #。您需要在 [^#] 周围放置一个捕获组,然后将捕获的字符添加到替换术语中。
    • 或者你可以做一个前瞻。
    【解决方案3】:
    1. 将语言更改为 Perl(Alt、L、P、DOWN)
    2. 全选 (CTRL-A)
    3. 块注释 (CTRL-Q)
    4. 改回语言

    编辑:没关系。不会忽略已注释的行。哦,好吧。

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      相关资源
      最近更新 更多