我有这个带有 perl 正则表达式的 bash 语句:
echo $1 | perl -pe 's|(?:://).+?(?:/)|b|'
打印这个:
httpbTesting/JS/displayName.js
来自此:
http://php2-mindaugasb.c9.io/Testing/JS/displayName.js
我期待的是:
http://b/Testing/JS/displayName.js
也许我不明白关于非捕获组的一些事情?我认为它们应该匹配,但不捕获(就像积极的向前看和向后看的组合)。我是不是搞错了?
最佳答案
您应该使用:
perl -pe 's|(//).+?(/)|$1b$2|'
非捕获组并不意味着输入文本不会被使用。非捕获括号对正则表达式进行分组,以便您可以应用正则表达式运算符,但不捕获任何内容。
或者使用lookarounds并避免捕获组:
echo "$1" | perl -pe 's|(?<=://).+?(?=/)|b|'
http://b/Testing/JS/displayName.js
关于regex - Perl 正则表达式 : non-capturing group seems not to be working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27866240/