我怎样才能将字符串(此处为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)"
答案 0 :(得分:2)
http://www.regular-expressions.info/lookaround.html
您可以替换此匹配:
(?<!Input!)(?=B\d+)
有了这个替代品:
Calc!
更多详情:
(?<!Input!)
匹配前面没有Input!
的位置。
(?=B\d+)
匹配后跟B\d+
或B
且至少有一位数的位置。
它们一起匹配您要插入Calc!
的位置。
答案 1 :(得分: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