Java 仅在某些输入上附加内容的正则表达式

Java 仅在某些输入上附加内容的正则表达式,java,regex,Java,Regex,仅当单词前面没有附加其他字符串(此处Input!)时,我如何才能将字符串(此处Calc!)仅附加到某些单词(此处B(后跟数字),例如B1/B2…)上。例子 B1->Calc!B1 和输入!B1->输入!B1(此处无变化) 您可以替换此匹配项: (? 有了这个替代品: Calc! 更多详情: (?匹配前面没有输入的位置! (?=B\d+匹配一个位置,该位置后跟B\d+,或B和至少一个数字 它们一起在您要插入的位置匹配Calc!这应该可以: String output = input.repla

仅当单词前面没有附加其他字符串(此处
Input!
)时,我如何才能将字符串(此处
Calc!
)仅附加到某些单词(此处
B
(后跟数字),例如
B1/B2…
)上。例子
B1->Calc!B1

输入!B1->输入!B1
(此处无变化)

您可以替换此匹配项:

(?
有了这个替代品:

Calc!
更多详情:

(?匹配前面没有
输入的位置!

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

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

这应该可以:

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

String output=input.replaceAll(“(?你能重新格式化以便更容易阅读吗?这里有什么问题吗?定义特殊字符串。我的意思是“输入!”,正如我在问题中提到的。我看不出第一个输入和输出之间有任何相似之处。你能更简单地解释一下吗?谢谢!我真的需要了解正则表达式是如何工作的。这让我很困惑。谢谢你的帮助和帮助如果你需要关于正则表达式的帮助,我强烈推荐
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