1

仅当单词之前没有附加字符串(此处Calc!)时,如何仅将字符串(此处)附加到某些单词(此处B(并后跟数字),例如)。例子 B1/B2....Input!B1 -> Calc!B1

Input!B1 -> Input!B1(这里没有变化)

Input - "=B1+B4"
Output - "=Calc!B1+Calc!B4"


Input - "=DIVIDE(B2,Input!B1)"
Output - "=DIVIDE(Calc!B2,Input!B1)"
4

2 回答 2

2

http://www.regular-expressions.info/lookaround.html

您可以替换此匹配项:

(?<!Input!)(?=B\d+)

用这个替换:

Calc!

更多细节:

(?<!Input!)匹配前面没有的位置Input!

(?=B\d+)匹配后跟B\d+, 或B和至少一位数字的位置。

它们一起在您要插入的位置匹配Calc!

于 2013-02-07T21:12:00.570 回答
1

这应该有效:

String output = input.replaceAll("(?<![!])B[0-9]+", "Calc!$0");

匹配输入的表达式构造如下:

(?<![!])B[0-9]+
 ^^^^^^ ^  ^  ^
    |   +--+--+--- Letter "B"
    |      +--+--- Followed by a digit
    |         +--- Repeated one or more times
    +------------- Unless preceded by an exclamation point

这是ideone的演示。

于 2013-02-07T21:12:21.537 回答