Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 剥去每一条没有';不要以某个前缀开头_Regex - Fatal编程技术网

Regex 剥去每一条没有';不要以某个前缀开头

Regex 剥去每一条没有';不要以某个前缀开头,regex,Regex,我正在尝试创建一个正则表达式,它去掉所有不以某个前缀开头的行。我用这个方法得出: (?:(?!\nLAST-MODIFIED:[^\n]+\n).*) 这似乎不能正常工作。我做错了什么?是的,我知道这样做总是会去掉第一行,不管它的前缀是否是LAST-MODIFIED:。但我确信第一行永远不会是最后修改的:行,所以应该是安全的。如果我想完全安全,我建议的修复方法是上次修改:[^\n]+\n.*)。这能满足您的需要吗 (^(?!LAST-MODIFIED)[^\n]*)+ 说明: ^-匹配行首

我正在尝试创建一个正则表达式,它去掉所有不以某个前缀开头的行。我用这个方法得出:

(?:(?!\nLAST-MODIFIED:[^\n]+\n).*)

这似乎不能正常工作。我做错了什么?是的,我知道这样做总是会去掉第一行,不管它的前缀是否是
LAST-MODIFIED:
。但我确信第一行永远不会是最后修改的:行,所以应该是安全的。如果我想完全安全,我建议的修复方法是上次修改:[^\n]+\n.*)。

这能满足您的需要吗

(^(?!LAST-MODIFIED)[^\n]*)+
说明:

  • ^
    -匹配行首
  • (?!LAST-MODIFIED)
    -检查它是否以LAST-MODIFIED开头
  • [^\n]*
    -如果上述情况属实,请匹配所有内容,直到找到换行符
  • +
    -重复

    • 这能满足您的需要吗

      (^(?!LAST-MODIFIED)[^\n]*)+
      
      说明:

      • ^
        -匹配行首
      • (?!LAST-MODIFIED)
        -检查它是否以LAST-MODIFIED开头
      • [^\n]*
        -如果上述情况属实,请匹配所有内容,直到找到换行符
      • +
        -重复

      编辑:-哎呀,您想要的行不是以某个前缀开头的。请参见下面的编辑:

      如果这不是在多行上检测内容,您可以使用grep在shell中轻松实现这一点:

      grep -v -P "^LAST-MODIFIED:.*" oldfile > newfile
      

      我建议将它放入一个新文件并检查它,然后使用
      mv newfile oldfile
      将新文件移到旧文件上,而不是直接更改文件,以避免潜在的数据丢失。

      编辑:-哎呀,您想要的行不是以某个前缀开头的。请参见下面的编辑:

      如果这不是在多行上检测内容,您可以使用grep在shell中轻松实现这一点:

      grep -v -P "^LAST-MODIFIED:.*" oldfile > newfile
      

      我建议将它放入一个新文件中并进行检查,然后使用
      mv newfile oldfile
      将新文件移到旧文件上,而不是直接更改文件,以避免潜在的数据丢失。

      我不确定您使用的是哪种语言,但在.NET/C中,这是有效的(已测试):

      ^匹配行的开头,$匹配行的结尾
      句号/点“.”匹配除换行符以外的任何字符的零次或多次出现

      我不确定您使用的是哪种语言,但在.NET/C中可以使用(已测试):

      ^匹配行的开头,$匹配行的结尾
      句点“.”与除换行符以外的任何字符的零次或多次匹配

      您使用的是什么语言?Regex在不同的实现中表现不同。我使用的是Qt的Regex特性。你用什么语言?Regex在不同的实现中表现不同。我使用的是Qt的Regex特性。我相信^与Qt中字符串的开头匹配@Pieter-如果这对你更有效,那么用新行替换它。真正欣赏每种模式的上下文解释。非常有用。我相信^与Qt中字符串的开头匹配@Pieter-如果这对你更有效,那么用新行替换它。真正欣赏每种模式的上下文解释。非常有用。