Notepad++正则表达式

3

首先,正则表达式可能是我处理过的最令人困惑的东西——话虽如此,我还是无法相信它们可以让人的生活变得多么高效。

所以我正在尝试理解通配符正则表达式,但没有成功。

需要转换:

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,

在回答中,您能否简要描述一下您正在使用的正则表达式?我一直在阅读教程,但它们让我感到困惑。谢谢。
3个回答

8

编辑:正如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分钟后接受。 - undefined
这个搜索短语存在一个问题,即如果行尾有空格,你的替换结果就会不正确。例如 f_dob <-- 注意末尾的3个空格会导致 ':f_dob '=>$f_dob , 的结果不正确。 - undefined
你说得对。我在发布之前没有注意到空格。我会进行更正。 - undefined
1
看我的答案,这是一个可行的解决方案 - 但在你的情况下,并且为了让 @mcflause 知道点(.+)不推荐作为解决方案,因为它匹配空格等基本上除了换行符之外的任何内容。 - undefined

2
Find: (^.*)

Replace with: ':$1'=>$$1,

1

查找:

(f_\w+)

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

替换为:

':\1'=>$\1,

这只是您的结果短语,但是我没有硬编码f单词,而是使用\1来引用搜索中的组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接