搜索包含但不包含文本和符号的文本

时间:2015-09-19 01:17:50

标签: regex perl

此正则表达式代码可正常用于搜索以感叹号开头并且不包含冒号的行:符号

  ^!([^:\n]*)$

除了上面的正则表达式代码之外,我还需要它包含含有"拼写"在其中,如下面的代码,但不起作用。

  ^!([^:\n]spelling*)$

3 个答案:

答案 0 :(得分:3)

你可以这样做:

^![^:\n]*spelling[^:\n]*$

如果您逐行循环浏览文件,则通常不需要从匹配项中排除换行符:

^![^:]*spelling[^:]*$

当您有复杂的要求时要考虑的另一个选择是将匹配分解为多个步骤。这使得更简单,更易于理解的代码更容易出错:

if (/^!/ and /spelling/ and not /:/)

答案 1 :(得分:2)

spelling*

匹配

spellin
spelling
spellingg
spellinggg

等。你正在努力

^([^:\n]*spelling[^\n]*)$

又名

^([^:\n]*spelling.*)$     # Assuming /s isn't used

但是在:之后允许spelling,所以你真的想要

^([^:\n]*spelling[^:\n]*)$

答案 2 :(得分:1)

^([^:\n]*spelling.*)$怎么样?

添加.*允许在“拼写”

之后出现任何字符(换行符除外)