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 不起作用?似乎是合法的?

4

2 回答 2

5

两个问题[\b^n]

  • ^如果它是第一个字符,则仅否定字符类。

  • [...]匹配一个字符,但你试图匹配一个字符以外的东西。在那里,\b代表字符08(退格)。

于 2015-09-09T14:53:12.140 回答
0

谢谢大家 - 从来不知道 ^ 在位置 1 中是不同的,在 CC 中。

我将它移到 CC 之外(标记开头),它按预期工作。我想我明白他们为什么这样做了(所以你可以在 [] 中使用 ^ 来表示插入符号而不是否定)。但似乎逃避它会产生同样的效果。有时我想知道拉里在想什么,但自从我们公司削减了 OSCON 的旅行后,我再也见不到他了……

非常感激...

于 2015-09-10T15:46:15.530 回答