正则表达式仅匹配不带字母数字前缀的字符串

时间:2011-03-26 23:43:28

标签: regex grep

是否有一些快速的方法来编写以这种格式接受某事的egrep正则表达式:

(某些字符或非数字和字母字符)黑色

black and white
    black is good color
blackeverywhere
9black cats

它应该接受第一行和第二行

编辑:也许我应该更精确,黑色必须是一些空格而黑色不必在开头

这是一个有效的

   a i o black    fdfd

这些不是

ppooo pblack sdsdds
iii blackdsdsd

4 个答案:

答案 0 :(得分:2)

如果我理解正确

$ grep "\bblack\b" file
black and white
    black is good color

$ ruby -ne 'print if /\bblack\b/' file

答案 1 :(得分:0)

我想:

(\s|^)black(\s|$)

这应该匹配任何空格或开头没有任何空格,后面跟任何空格或最后没有任何空格。

听起来你只是希望黑色在字符串中被隔离......被空格,制表符或换行符包围。

答案 2 :(得分:0)

根据新示例进行了更新

更精确:

(\s|^)black(\s|$)

  1. (\s|^)匹配空格或新行的开头
  2. black文字字符串匹配
  3. (\s|$)匹配空格或行尾

答案 3 :(得分:0)

其中一个可能有效

/(^|[^a-zA-Z0-9])black(\s|$)/
/(^|[\W_])black(\s|$)/