Grep表达式匹配空格或行首

时间:2013-10-20 14:49:28

标签: regex grep

我正在寻找一个grep表达式,它可以让我在标点符号之前检查是否有空格或行首;我想确保标点符号一直使用。我的拥有是这样的(为简单起见,我在示例中仅用[\.,;:\!?]替换了,

~ > echo -e "some, text\nsome ,text\n,some text" | grep " ,"
2:some ,text

没关系,但错过了第三种情况。我尝试了[^ ],"(^\| ),",但都没有工作。这里的正确表达是什么?

3 个答案:

答案 0 :(得分:1)

这应该有效: echo -e "some, text\nsome ,text\n,some text" | grep -P "( |^),"

-P将其解释为类似Perl的正则表达式,可以防止不必要的字符转义。

答案 1 :(得分:1)

这是什么工作。我不认为你可以假设-P选项可用(它不在默认的OSX grep中)。但grep -E也让你避免逃避:

echo -e "some, text\nsome ,text\n,some text" | grep -E "( |^),"

答案 2 :(得分:0)

使用perl regex的{​​{1}}风格尝试使用正面的后视断言:

echo -e "some, text\nsome ,text\n,some text" | grep -P '(?<=\s|^),'

产量:

some ,text
,some text