蚂蚁正则表达式的Android包名(ant regex for android package na

2019-09-23 14:34发布

在我的Android项目中所有的我的.java视图文件导入基于当前包的名称R档。 当我在Android清单更改我的包名的名称(动态,而不是通过Eclipse或任何其他IDE重构),我需要我所有的java文件的引用指向获取生成新的R文件

我通过Ant使构建脚本,但我不知道正则表达式公约将是什么样子

需要更换的字符串是这样的:

import com.mysite.myapp.R;

即。

import com.sushiroll.california.R

这是我在我的Ant构建脚本

<replaceregexp file="src/*"
           match="import*.R"
           replace="import ${current.package}.R"
           byline="true">
        <fileset dir="src/.">
            <include name="*.java"/>
        </fileset>
</replaceregexp>

在这里我想匹配说所有字符串import和结束.R

而代之以import $current.package}.R

如何将我的字,对于蚂蚁正则表达式? 匹配和替换我写的只是猜测

Answer 1:

你需要.R前组旧包名称字符

如果你知道包名

    match="import com\.mysite\.myapp\.R;"

如果你现在知道包的名字,但要准备,如果你从不同的包导入R设定为失败错误的进口

    match="import (.*).R;"

要更换

replace="import ${current.package}.R;"

    <fileset dir="src">
        <include name="**/*.java"/>
    </fileset>


Answer 2:

<replaceregexp
   match="import .+?\.R;"
   replace="import ${current.package}.R;"
   flags="g"
> 
...

其中+? 需要使其工作,如果你在一个线上的两个进口, g需要这样每个文件不只有一个进口替代。 虽然目前你只有每个文件之一,因为你用相同的字符串替换所有的人,这是普遍正确的正则表达式...



文章来源: ant regex for android package names