动态正则表达式查找和替换模式

时间:2015-05-11 05:53:28

标签: regex notepad++

我的目标是转变:

src/com/company/folder/anotherfolder/manyfolders/filename.java

进入这个:

a few words com.company.folder.anotherfolder.manyfolders filename "description"

我主要使用以下查找和替换:

查找:(.*?)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)/(.*?)(\..*)

替换:a few words $2\.$3\.$4\.$5\.$6\.$7\.$8\040$9\040"description"

哪个有效,但是我可能有不同数量的文件夹,因此在这种情况下它不会起作用。

如何才能使其适用于任意数量的文件夹?

3 个答案:

答案 0 :(得分:1)

考虑连续使用几个正则表达式:

  1. 转换斜杠

    /
    

    =>

    .
    
  2. 转换其余

    ([a-zA-Z0-9\.]+)\.(\w+)\.java
    

    =>

    a few words $1 $2 "description"
    

答案 1 :(得分:1)

您正在执行两个不同的流程:

  1. /
  2. 替换所有 .
  3. 在替换结果之前和之后添加文本以及其他一些小的更改。
  4. 使用单个正则表达式是不可能的,如果您仍想使用notepad ++的查找/替换功能,则需要进行两次替换。我建议以下替换:

    1. /替换为.(此处不需要正则表达式,但如果您/不想替换,则会变得更加复杂,您可以使用(?:(?!^)\G|)\K/(?=[^.\r\n]*\.)这样的正则表达式进行查找,并使用.进行替换。

    2. 正则表达式替换

      [^.\r\n]+\.((?:[^.\r\n]+\.)+[^.\r\n]+)\.([^.\r\n]+)\.[^.\r\n]+
      

      并替换为

      a few words $1 $2 "description"
      
    3. 我正在使用这个正则表达式,假设文件夹和文件名可以包含空格并占据整行。

答案 2 :(得分:0)

你需要重复/字符 - 你尝试过类似的事情吗?

((.*)/)(.*)