Вне контекста, это трудно судить, но забывчивость здесь, вероятно, излишняя. Они полезны для исключения строк (как в примере Стрейгера) и в некоторых других особых обстоятельствах, когда простые RE терпят неудачу, но я часто вижу их использование там, где более простые выражения легче писать, работать в большем количестве разновидностей RE и, вероятно, быстрее.
В вашем случае вы, вероятно, могли бы написать, например, (\b\w+\b)
, или даже (\w+)
, используя натуральные границы, или, если вы хотите отличить (foo) от -foo- (например), используя \((\w+)\)
.
Теперь, возможно, контекст диктует это запутанное использование (или, может быть, вы просто экспериментировали с оглядкой в прошлое), но полезно знать альтернативы.
Теперь, если вам просто любопытно, почему второе выражение не работает: они известны как «утверждения нулевой ширины»: они проверяют, что то, что следует или предшествует, соответствует ожидаемому, но они не потреблять строку, поэтому все, что после (или перед отрицательным), должно совпадать с утверждением. Например. если вы положили что-то после положительного взгляда, которое не соответствует заявленному, вы уверены, что RE потерпит неудачу.