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 -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-如果这对你更有效,那么用新行替换它。真正欣赏每种模式的上下文解释。非常有用。