grep中与字符串匹配的正则表达式

时间:2014-12-22 10:39:37

标签: regex linux bash

我的字符串看起来像:

sapaa-czbrqrnop-3449607e001
sapaa-deduipswp-3446871e001
sapaa-delejwtbp2-3446869e001

这些字符串位于服务器上的文件中。我想用grep a找到这个字符串。所以我写了这样的话:

grep "[a-zA-Z]\-[a-zA-Z0-9]\-[0-9]\e[0-9]" filename

所以它应该在线上找到合适的字符串。但它不起作用。我在岩石上。这个正则表达式有什么问题,或者我不能在grep中使用它吗?

1 个答案:

答案 0 :(得分:2)

您只需在每个字符类旁边添加\+*即可。 +重复前一个标记一次或多次,而不跟随[a-zA-Z]*的角色类+将匹配单个字符。 *重复前一个令牌零次或多次。因为基本grep使用BRE,所以您需要转义+符号。这样它就像一个重复量词。

grep "[a-zA-Z]\+-[a-zA-Z0-9]\+-[0-9]\+e[0-9]\+" filename

必要时使用锚点。

grep "^[a-zA-Z]\+-[a-zA-Z0-9]\+-[0-9]\+e[0-9]\+$" filename