3

我在 Eclipse 中使用正则表达式,想知道是否有办法根据匹配添加字符。

我正在使用这些表达式来匹配和替换:

Match: ^(\s*)(//)?(.*?)"([\p{Punct}\p{Space}]*)?(\p{Alnum}.*?\p{Alnum})([\p{Punct}\p{Space}]*)?"(.*?)$
Replace: $1$3"$4" \+ i18n.tr\("$5"\) \+ "$6"$7

例如

System.err.println("Unexpected number of guests: ");

我正在尝试将其替换为

System.err.println(i18n.tr("Unexpected number of guests") + ": ");

但我越来越

System.err.println("" + i18n.tr("Unexpected number of guests") + ": ");

如果没有捕获任何内容,有什么方法可以摆脱 i18n.tr(.*) 之前的“”+?

4

1 回答 1

1

你不能用一个搜索替换来做到这一点!

唯一的方法是使用两个搜索替换:

  • 第一个带有 punct-space

Match: ^(\s*)(//)?(.*?)"([\p{Punct}\p{Space}]++)(\p{Alnum}.*?\p{Alnum})([\p{Punct}\p{Space}]*)?"(.*?)$

Replace: $1$3"$4" \+ i18n.tr\("$5"\) \+ "$6"$7

  • 第二个没有点空间

Match: ^(\s*)(//)?(.*?)"(\p{Alnum}.*?\p{Alnum})([\p{Punct}\p{Space}]*)?"(.*?)$

Replace: $1$3i18n.tr\("$4"\) \+ "$5"$6

不要忘记在任何尝试之前进行备份

于 2013-04-24T01:11:57.973 回答