我的字符串看起来像:
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中使用它吗?
答案 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