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、および少なくとも 1 つの数字が続く位置に一致します。

一緒に、挿入したい位置で一致します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 に答える