如何查找不以某个字符结尾的行

时间:2010-11-17 09:52:46

标签: regex

如何查找不以。结尾的行。“

description="This has a full stop."
description="This has a full stop."
description="This line doesn't have a full stop"

4 个答案:

答案 0 :(得分:2)

您可以使用字符类来描述除.之外的任何字符的出现:

[^\n.](\n|$)

这将匹配任何既不是.也不是新行字符的字符,并且后跟新行字符或字符串末尾。如果支持多行模式,您也可以仅使用$代替(\n|$)

答案 1 :(得分:1)

取决于您的环境。在Linux / Unix / Cygwin上你会做这样的事情:

grep -n -v '\."$' <file.txt

grep -n -v '\."[[:space:]]*$' <file.txt

如果尾随空格很好。

答案 2 :(得分:1)

我想您正在寻找的正则表达式模式如下:

\."$

\.表示真正的点。 (与。相比。表示除\ n之外的任何字符

"是双引号,结束了示例中的行。

$表示行尾。

您使用此模式的方式取决于您使用的环境,因此请为我们提供更精确的答案: - )

答案 3 :(得分:1)

通常,正则表达式匹配。做一个不匹配并不容易。这类事情的一般解决方案是颠倒真值。例如:

grep:grep -v '\.$'

Perl:$line !~ /\.$/

Tcl:![regexp {\.$} $line]

在这种特定情况下,由于它只是一个字符,因此您可以使用字符类语法[],因为它接受^修饰符来表示任何不是指定字符的内容:< / p>

[^.]$

所以,在Perl中它会是这样的:

$line =~ /[^.]$/
相关问题