在Notepad ++中,如何替换大文件中括在.
括号内的某个字符([]
)?
我在Notepad ++中有一个非常长的代码转储文件(PeopleCode)。在代码的每个部分的顶部,有一个这样的标记:
[G3FORM.FormFactory.OnExecute]
这表示一个类包和一个类。此外,这可以是多层深度:
[Y_REST.RESTQueries.ExampleClass.OnExecute]
每当在代码中声明一个类时,它都不会使用.
' s。它使用:
' s。 E.g:
import G3FORM:Form;
因此,当我想在代码转储中搜索该类时,我必须将所有.
更改为:
。我可以做到这一点,但它有点烦人。
我想帮助一下Notepad ++的正则表达式搜索功能进行查找和替换。我需要用.
替换这些标头中包含的所有:
。 E.g:
[Y_REST.RESTQueries.ExampleClass.OnExecute]
会变成
[Y_REST:RESTQueries:ExampleClass.OnExecute]
除了最后一个冒号之外的所有冒号都被替换(即便如此,如果这使得它过于复杂,也可以替换最后一个.
。)
我一直在玩一些正则表达式尝试得到这个,但我对它不够熟悉。
这根本不起作用:
(([A-Z])\.)+
这也找不到任何东西:
\[(([A-Z])\.)+\]
我可能远离基地。我还没有足够熟悉正则表达式,知道如何使用查找和替换正则表达式。
答案 0 :(得分:0)
正则表达式查找/替换如下:
(\[[^\].]+)\.([^\]]+\])
\1:\2
答案 1 :(得分:0)
试试这个toCharArray
解释
(?:(?!\A)\G|\[(?=[^\[\]]+\]))[^\[\].]*\K\.
替换为您想要的任何内容
注意 - 出于性能原因,我们通过检查结束来限制延迟
每个开括号 (?: # Cluster start
(?! \A ) # Not beginning of string
\G # G anchor - If matched before, start at end of last match
| # or
\[ # Open bracket
(?= [^\[\]]+ \] ) # Only if there is a closing bracked down stream
) # Cluster end
[^\[\].]* # Not brackets nor dot
\K # Exclude previous in match
\. # The dot, all thats left
答案 2 :(得分:0)
由于级别数量有限,一种非常直接的方法是使用多个搜索,每个级别一个搜索。
以下是四个级别的搜索/替换:
Find what : \[([^.]+)\.([^.]+)\.([^.]+)\.([^\]]+)\]
Replace with: \[$1:$2:$3:$4\]
搜索表达式由([^.]+)\.
“而不是点后跟一个点”括在方括号中的组组成。
$1
.. $4
表示捕获群组,即与括号中的表达式匹配的内容。
要执行更少或更多级别的替换,请在搜索框中添加删除或添加\.([^\.]+)
,然后相应地调整替换框。