我试图在另一个特定字符前面添加一个字符,除非它前面已经有我要注入的字符。这很好用(在任何 Z 之前插入一个 n ,除非它之前已经有一个 n ):
s/([^n])Z/$1nZ/g;
除了前面没有任何内容的单词边界。所以要解决这个问题,我尝试过:
s/([\b^n])Z/$1nZ/g; # does not work
s/(\b|[^n])Z/$1nZ/g; # does work
为什么#1 不起作用?似乎是合法的?
我试图在另一个特定字符前面添加一个字符,除非它前面已经有我要注入的字符。这很好用(在任何 Z 之前插入一个 n ,除非它之前已经有一个 n ):
s/([^n])Z/$1nZ/g;
除了前面没有任何内容的单词边界。所以要解决这个问题,我尝试过:
s/([\b^n])Z/$1nZ/g; # does not work
s/(\b|[^n])Z/$1nZ/g; # does work
为什么#1 不起作用?似乎是合法的?
两个问题[\b^n]
:
^
如果它是第一个字符,则仅否定字符类。
[...]
匹配一个字符,但你试图匹配一个字符以外的东西。在那里,\b
代表字符08
(退格)。
谢谢大家 - 从来不知道 ^ 在位置 1 中是不同的,在 CC 中。
我将它移到 CC 之外(标记开头),它按预期工作。我想我明白他们为什么这样做了(所以你可以在 [] 中使用 ^ 来表示插入符号而不是否定)。但似乎逃避它会产生同样的效果。有时我想知道拉里在想什么,但自从我们公司削减了 OSCON 的旅行后,我再也见不到他了……
非常感激...