正则表达式匹配最多一个字符的字符串

时间:2013-11-11 23:34:27

标签: java regex string grep

我有多行和某个字符的文件只能出现一次(在整个文件中);我需要一种方法来检查哪些文件存在。

假设我有

1. 00000
2. 00050
3. 05500
4. 00000

五只能发生一次。如何使用bash和 grep

将此文件标记为格式错误

我想您首先要检查哪些行包含5.如果有多行,请停止。然后查看该行上是否有超过五个,如果是,请停止。有一个更好的方法吗?

现在我会通过

来计算线条
grep "5" file | wc -l.

如果有多个,请停止。如果没有,继续那一行。那么我如何计算有多少5?起初我使用了5 {1},但这似乎不起作用 - 如果字符串是“55”它只匹配那里的每5个,而我需要最多1个。然后我想我会看到是否有超过5个,如果是,请停止。但是5 {2,}仅在彼此之后有多个5的情况下才有效。另一方面,

.*5.*5.*

只匹配2个或更多5个字,但它看起来很怪诞......

有什么更好的建议吗?我确定有,但现在是晚上,这就是我今天的大脑,对不起。记住,我只能使用grep。

2 个答案:

答案 0 :(得分:3)

要确保字符串只包含一次5,请使用正则表达式

^[^5]*5[^5]*$

如果需要5出现一次或不出现,请使用正则表达式

^[^5]*5?[^5]*$

如果要匹配包含多个5的字符串,请使用正则表达式

5.*5

答案 1 :(得分:0)

你可以这样做:

grep -o 5 file | wc -w


说明:
grep -o - 仅输出“匹配”(在情况下,“5”) wc -w - 计算“单词”(代币)