【问题标题】:Notepad++ regular expressionsNotepad++ 正则表达式
【发布时间】:2012-09-02 06:08:31
【问题描述】:

首先,正则表达式很可能是我处理过的最令人困惑的事情 - 话虽如此,我无法相信它们能让人活得如此高效。

所以我试图理解通配符正则表达式,但没有运气

需要转弯

f_firstname
f_lastname
f_dob       
f_origincountry 
f_landing  

进入

':f_firstname'=>$f_firstname,
':f_lastname'=>$f_lastname,
':f_dob'=>$f_dob,
':f_origincountry'=>$f_origincountry,   
':f_landing'=>$f_landing,

在答案中,您能否简要描述一下您正在使用的正则表达式,我一直在阅读教程,但它们让我大吃一惊。谢谢。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    编辑:正如 Chris 所指出的,您可以通过清理目标字符串中可能存在的任何空白来改进正则表达式。我也像他一样用\w 替换点,因为这比使用. 更好的做法

    Search: ^f_(\w+)\s*$
    ^     # start at the beginning of the line
    f_    # look for f_
    (\w+) # capture in a group all characters
    \s*   # optionally skip over (don't capture) optional whitespace
    $     # end of the line
    
    Replace: ':f_\1'=>$f_\1,
    ':f_    # beginning of replacement string
    \1      # the group of characters captured above
    '=>$f_  # some more characters for the replace
    \1,     # the capture group (again)
    

    【讨论】:

    • 谢谢!你的解释比我读过的所有教程更有意义。我现在可以用这张作为参考卡了:) 3 分钟后接受。
    • 这个搜索短语有一个问题,如果行尾有空格,您的替换将看起来不正确。例如f_dob ':f_dob '=>$f_dob ,
    • 你是对的。发帖前没注意空格。我会改正的。
    • 查看我的答案以了解可行的方法-但在您的情况下,@mcflause 不建议将点 (.+) 作为解决方案,因为这与空格等基本匹配,但换行
    【解决方案2】:
    Find: (^.*)
    
    Replace with: ':$1'=>$$1,
    

    【讨论】:

      【解决方案3】:

      查找内容:

      (f_\w+)
      

      这里我们匹配f_ 后跟一个单词字符\w+(加号表示一次或多次)。将整个内容括在括号中意味着我们可以在替换模式中引用该组

      替换为:

      ':\1'=>$\1,
      

      这只是您的结果短语,而不是硬编码我在搜索中输入 \1 的 f 词来引用该组

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-26
        • 2012-04-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-04
        • 1970-01-01
        相关资源
        最近更新 更多