2009-12-10 66 views
2

我的使用情况如下:我想找到类似这样的东西/name.action所有出现,但其中最后一部分是不.action如:正则表达式不匹配特定字符串

  • name.actoin - 应该匹配
  • name.action - 不应该匹配
  • nameaction - 不应与

我有这样的:
/\w+.\w*
匹配由点分隔的两个单词,但我不知道如何添加'和不匹配.action'。

回答

5

首先,你需要为是采取在正则表达式any character逃避你的性格.。其次,您需要添加一个Match if suffix is not present群组 - 以(?!)语法表示。

你也可以把一个回旋^来表示一个新行的开始,改变你的*(任何重复)到+(一个或多个repititions)。

^/\w+\.(?!action)\w+是完成的正则表达式。

+0

在大多数正则表达式实现中,'.'不匹配'\ r'和'\ n'。 –

+0

\ w是否仅适用于ASCII取决于所使用的编程语言,有时也适用于正则表达式编译标志 - 例如,在某些情况下,您需要一个'/ u'或'(?u)',而在其他情况下(例如Java )甚至不足以获得包括Unicode字母。 – tchrist

0

您需要转义点字符。

+0

这只是问题的一个(小)的一部分。 –

2
^\w+\.(?!action)\w* 
0

见你需要使用zero-width negative lookahead assertion。这会让你在字符串中向前看,并且基于一个单词的否定匹配。

所以正则表达式你需要(包括转义字符。)看起来是这样的:

/name\.(?!action)/ 
相关问题