正则表达式[^ _]有什么问题?

时间:2014-05-28 16:44:49

标签: regex

我有一个包含以下行的文件:

apple
,apple
crab_apple
,crab_apple

我想使用正则表达式通过使用正则表达式来拉出'apple'和',apple'行:

'[^_]apple'

但是,这只输出一行:

,apple

我对这个正则表达式缺少什么,以防止它返回'apple'?

5 个答案:

答案 0 :(得分:2)

  

我对这个正则表达式缺少什么,以防止它返回'apple'?

您错过了lookbehind

(?<![_])apple

消费 [^_]前面的字符"apple"不同之后,检查它不是下划线,(?<![_])只需检查 "apple"前面的字符不是下划线,不消耗它。

Demo on ideone.

答案 1 :(得分:1)

你的正则表达式

'[^_]apple'

匹配字词_之前不包含符号apple的字符串。

您可能正在寻找的更多内容如下:

 ^,?apple

答案 2 :(得分:1)

如果您只是寻找苹果,请尝试获取apple on a word boundary

\bapple\b

答案 3 :(得分:0)

你说你在apple之前想要一个字符,并且只有apple之前没有任何字符(也就是说,它没有)。

获得它的一种方法是:

  

'[^_]?apple'

含义&#34;零或一长即它&#39; s-not -_&#34;。

答案 4 :(得分:0)

你可以试试这个:

  

'([^_]|\b)apple'

它正在寻找单词的开头或不是下划线