Regex Grep表达式与空格或行首匹配

Regex Grep表达式与空格或行首匹配,regex,grep,Regex,Grep,我正在寻找一个grep表达式,它可以让我检查标点符号前是否有空格或行首;我想确保标点符号的使用是一致的。我所拥有的是(为了简单起见,我在示例中将[\,;:\!?]替换为,): 没关系,但是错过了第三个案例。我试过[^]、和“(^\|”)、”,但都不管用。这里的正确表达式是什么?使用regex的perl风格尝试使用肯定的look-behind断言: echo -e "some, text\nsome ,text\n,some text" | grep -P '(?<=\s|^),' 这应该

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


没关系,但是错过了第三个案例。我试过
[^]、
“(^\|”)、”
,但都不管用。这里的正确表达式是什么?

使用
regex的
perl
风格尝试使用肯定的look-behind断言:

echo -e "some, text\nsome ,text\n,some text" | grep -P '(?<=\s|^),'
这应该起作用:
echo-e“一些,文本\n一些,文本\n,一些文本“|grep-P”(| ^),”


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

下面是可以使用的方法。我认为您不能假设-P选项可用(它不在默认OSX grep中)。但是grep-E也可以让你避免逃跑:

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

谢谢,-E工作得很好(我使用MacPorts时,mohit6up的答案中的-P也工作得很好)。尽管上面的
-E
选项是一个更简单的解决方案,但它仍然工作得很好。谢谢:)
some ,text
,some text
echo -e "some, text\nsome ,text\n,some text" | grep -E "( |^),"