我在 notepad++ 文档中有多行,我想查找所有包含除“0.00”以外的内容的行,即
Timetaken: 2.39
Timetaken: 1.30
Timetaken: 0.75
Timetaken: 0.00
Timetaken: 0.43
我想找出所有不为 0.00 的值?
使用 notepad++ 可以实现这个功能吗?
答案1
当前接受的答案是错误的;即使它应该匹配以下内容,它也不会匹配:
Timetaken: 0.0
Timetaken: 0.01
Timetaken: 0.0asdf
foo Timetaken: 0.0 bar
Timetaken: 10.0
它有四个错误:
它需要锚点(
^
和$
),以便当 Timetaken 是该线唯一组成的东西时,它才与该东西匹配。[00]
相当于0
,因为它是一个字符类。.
没有逃脱。有一个不必要的
.*
。
因此,固定的正则表达式:
^Timetaken: (?!0\.00)$
答案2
我没有 Notepad++(因为我只使用 Linux 进行开发工作),但我已在文本编辑器 Kate 中尝试了您的示例行,发现以下正则表达式可以仅选择符合上述模式但不包含“0.00”作为数值的行:
^Timetaken: (?!0\.0+$)([0-9]+\.[0-9]+)$
这个正则表达式表示:
- 该行开始后立即出现“Timetaken:”。
- 值“0.”后跟一个或多个零,直到行尾不是找到。(这被称为负面前瞻断言。)
- 找到一个或多个数字,后跟一个点,后跟一个或多个数字,直到行尾。
- 如果数值不是零,那么它将被正则表达式匹配器捕获在第一组中。
看着在 Notepad++ 中使用正则表达式的文档我认为这种模式在该文本编辑器中也能正常工作。
答案3
如果文件中除了您在此处共享的行之外还有其他内容,则可以改用此正则表达式:
^(.(?!0\.00))*$
IE 如果您有不以 Timetaken 开头的行:
答案4
按Ctrl+f搜索并使用以下正则表达式
Timetaken: (?!.*[0].[00])
它将找到除“Timetaken: 0.00”之外的所有行,输出如下