如何查找不以。结尾的行。“
description="This has a full stop."
description="This has a full stop."
description="This line doesn't have a full stop"
答案 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 =~ /[^.]$/