所以我需要返回修改后的字符串,它在跳过注释时用另一个令牌替换令牌的第一个实例。这是我正在谈论的一个例子:
This whole quote is one big String
-- I don't want to replace this @@
But I want to replace this @@!
作为一名前 .NET 开发人员,我认为这很容易。我会像这样做一个负面的回顾:
(?<!--.*)@@
但后来我了解到 Java 不能做到这一点。所以在得知花括号没问题后,我尝试了这个:
(?<!--.{0,9001})@@
这并没有引发异常,但它确实与评论中的 @@ 匹配。
当我使用 Java 正则表达式测试器测试这个正则表达式时,它按预期工作。我能想到的唯一一件事就是我使用的是 Java 1.5。Java 1.5 的正则表达式引擎中是否有可能存在错误?假设它确实如此,我如何让 Java 1.5 做我想要它做的事情而不分解我的字符串并重新组装它?
编辑我将 # 更改为 -- 运算符,因为看起来正则表达式会更复杂,有两个字符而不是一个字符。我最初并没有透露我正在修改查询,以避免关于“你不应该那样修改查询!”的题外话讨论。我这样做是有充分理由的。请不要讨论查询修改的良好做法。谢谢