Eclipse RegEx帮助,不包括子串

时间:2012-12-25 04:13:37

标签: java android regex eclipse

我正在Android应用上执行本地化。此过程中的一个难点是区分用于显示给用户的字符串文字与本地/编程使用的字符串文字之间的区别。

public static String PERSON = "Person";
intent.putExtra("isPerson", isPerson);
myTextView.setText("My name is Mark");

我可以使用什么正则表达式给我代码行,其中文本被引号括起但是1)不是变量声明和2)不用作字符串键/值映射中的键,如第二行。理想的目标是使表达式的匹配结果为第3行的类型。我可以查找包含setText的字符串,但接下来会遗漏下面的硬编码字符串:

String firstName = "Mark";
myTextView.setText(firstName);

我已设法获取所有非空的字符串,这些字符串被引号括起来:

\"\w{1,}"

问题在于它太宽泛并且给了我一切。此外,我希望以下内容能够为我提供所有不包含putExtra的字符串:

(?<!putExtra).\"\w{1,}"   

但这不能很好地工作,因为它返回的结果如下:

intent.putExtra("title", "Welcome");

当我想要排除包含putExtra子字符串的任何文本行时,“欢迎”使其显示为匹配。

您的任何帮助RegEx大师将不胜感激。我目前正在使用Eclipse的文件搜索功能,启用正则表达式

1 个答案:

答案 0 :(得分:0)

你正试图解决错误的问题。你的行

intent.putExtra("title", "Welcome");

不应该有文字字符串“title”,而应该是命名常量。因为你肯定使用“title”字符串至少两次(当创建额外信息时,以及在活动onCreate方法中提取它时),根据清洁代码规则应该是一个命名常量,以避免幻数和字符串。

遵循这种方法,基本上不需要识别正则表达式中的键/值设置器。