我有perl正则表达式的这个bash语句:
echo $1 | perl -pe 's|(?:://).+?(?:/)|b|'
Run Code Online (Sandbox Code Playgroud)
打印这个:
httpbTesting/JS/displayName.js
Run Code Online (Sandbox Code Playgroud)
由此:
http://php2-mindaugasb.c9.io/Testing/JS/displayName.js
Run Code Online (Sandbox Code Playgroud)
我在期待:
http://b/Testing/JS/displayName.js
Run Code Online (Sandbox Code Playgroud)
也许我不了解非捕获组?我认为它们应该匹配,但不能捕捉(就像一个积极的前瞻和后面的组合).我错了吗?
你应该使用:
perl -pe 's|(//).+?(/)|$1b$2|'
Run Code Online (Sandbox Code Playgroud)
非捕获组并不意味着不会消耗输入文本.非捕获括号将正则表达式分组,因此您可以应用正则表达式运算符,但不捕获任何内容.
或者使用外观并避免捕获组:
echo "$1" | perl -pe 's|(?<=://).+?(?=/)|b|'
http://b/Testing/JS/displayName.js
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |