仅当单词之前没有附加字符串(此处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)"
http://www.regular-expressions.info/lookaround.html
您可以替换此匹配项:
(?<!Input!)(?=B\d+)
用这个替换:
Calc!
更多细节:
(?<!Input!)
匹配前面没有的位置Input!
。
(?=B\d+)
匹配后跟B\d+
, 或B
和至少一位数字的位置。
它们一起在您要插入的位置匹配Calc!
。
这应该有效:
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