Regex 在Groovy中使用反斜杠

Regex 在Groovy中使用反斜杠,regex,groovy,Regex,Groovy,我正在使用groovy编写一个脚本来替换UNC服务器名称和目录结构的一部分。我有以下资料: def patternToFind = /\\\\([a-zA-Z0-9-]+)\\share\\([a-zA-Z]+)/ def patternToReplace = '\\\\\\\\SHARESERVER\\\\share\\\\OPS' 这是可行的,但所有这些都很难看。我在正则表达式中理解了为什么使用\\\\\查找\\,但让我困惑的是,为什么在替换过程中,我必须使用四个\来等于一个\ 如果有人有

我正在使用groovy编写一个脚本来替换UNC服务器名称和目录结构的一部分。我有以下资料:

def patternToFind = /\\\\([a-zA-Z0-9-]+)\\share\\([a-zA-Z]+)/
def patternToReplace = '\\\\\\\\SHARESERVER\\\\share\\\\OPS'
这是可行的,但所有这些都很难看。我在正则表达式中理解了为什么使用
\\\\\
查找
\\
,但让我困惑的是,为什么在替换过程中,我必须使用四个
\
来等于一个
\

如果有人有更好的方法来做这件事,我将不胜感激。目标是取代

\\\share\

具有正确的

谢谢

编辑:我想我应该澄清一下。SHARESERVER和OPS实际上是变量。因此,最终结果将是:

def serverName = //some passed in server
def env = //some passed in env

def patternToFind = /\\\\([a-zA-Z0-9-]+)\\NAS\\([a-zA-Z]+)/
def patternToReplace = '\\\\\\\\' + serverName + '\\\\share\\\\' + env
所以我想做这件事的唯一方法就是构建一个字符串文本来替换我正在寻找的部分

我将是第一个承认我在reg-ex上很差劲的人,所以如果你能用它们来捕获字符串中的一个值,并用另一个值替换它,我洗耳恭听。

它对你有用吗

def patternToReplace = $/\\SHARESERVER\share\OPS/$

如果您想使用Java正则表达式中的文字替换字符串(与涉及
$n
反向引用的字符串相反),那么最安全的做法是使用:


谢谢你的编辑!我正试图找出如何转义这些字符扫描你不使用与patternToFind相同的slashy字符串格式吗<代码>/\\\\SHARESERVER\\share\\OPS/是的,它应该
断言($/\\\SHARESERVER\share\OPS/$=~/\\\SHARESERVER\\share\\OPS/)
。忘记了
$/
美元斜杠字符串。:)哈好的。根据我的实验,这会使单个反斜杠加倍。尽管方法名。。。尽管Javadoc有点神秘:“斜杠(“\”)和美元符号(“$”)没有特殊意义”
def patternToReplace = Matcher.quoteReplacement(/\\SHARESERVER\shares\OPS/)