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

Dynamic Regex find and replace pattern

我的目标是转成这样:

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

进入这个:

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

我得到它主要是为了使用以下查找和替换:

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

替换:a few words \.\.\.\.\.\.00"description"

这没问题,但是我可能有不同数量的文件夹,所以在那种情况下它不会工作。

我怎样才能让它适用于任意数量的文件夹?

您需要在 / 字符上重复 - 您是否尝试过类似的操作:

((.*)/)(.*)

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

  1. 转换斜杠

    /
    

    =>

    .
    
  2. 转换其余

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

    =>

    a few words   "description"
    

您在这里执行两个不同的过程:

  1. 全部/替换为.
  2. 在替换结果前后添加文本以及其他一些小改动。

这对于单个正则表达式是不可能的,如果您仍然想使用 notepad++ 的 find/replace 功能来完成它,您将需要进行两次替换。我建议以下替换:

  1. /替换为.(这里不需要正则表达式,但是如果你有/你不想替换,那么它就变得更复杂,您可以使用 (?:(?!^)\G|)\K/(?=[^.\r\n]*\.) 之类的正则表达式进行查找,使用 . 进行替换)。

  2. 的正则表达式替换
    [^.\r\n]+\.((?:[^.\r\n]+\.)+[^.\r\n]+)\.([^.\r\n]+)\.[^.\r\n]+
    

    并替换为

    a few words   "description"
    

我使用此正则表达式时假设文件夹和文件名可以包含空格并占据整行。