在正则表达式中使用超过字长的负边界的Word边界

时间:2014-05-24 15:34:31

标签: regex negative-lookahead word-boundary

很抱歉,如果该标题不能完全解释我的问题。昨天有人亲切地指出如何离开这里:

(?<STREET>(?!The|Long)\w+ Drive)

给了我像

这样的结果
  • 街道:他开车

使用字边界:

?(?!The | Long)\ b \ w + Drive)

这就像一个魅力(STREET没有回复'The Street')然而我现在面临的问题是,虽然我正在寻找'Drive'的1个字前缀,但我有1个字排除,我无法想象如何使排除时间更长。例如

  • Mile Drive

很好,但

  • a Mile Drive
  • 快速英里驱动器

不是。这只是一个例子,而不是试图解决这个特定的实例;如何从模式的单个单词部分中排除术语与单词。

1 个答案:

答案 0 :(得分:1)

如果你想匹配一个或多个单词,只需使用分组和加号:

(?<STREET>(?!The|Long)(\b\w+ )+Drive)

加号+匹配一个或多个。或者,如果您想要匹配一定数量的单词,请尝试使用{}来匹配1到4个单词之间使用:

(?<STREET>(?!The|Long)(\b\w+ ){1,4}Drive)