【问题标题】:How to remove everything except "01 - 10" pattern and vice-versa?如何删除除“01 - 10”模式之外的所有内容,反之亦然?
【发布时间】:2021-07-08 14:14:37
【问题描述】:

我想从文件中删除所有内容,包括数字、字符、特殊字符,01 - 10 模式除外。例如:

01 - 10
This is the first one :1
02 - 20
This is the second one -2
03 - 30
This is the third one "3
04 - 40
This is the forth one ;4
05 - 50
This is the fifth one .5

我使用的正则表达式是[^\d\d\s-\s\d\d],请记住通过选择\d\d\s-\d\d 并使用字符集charet(^) 来匹配除“01 - 10”模式之外的所有内容。 但使用这个我得到:

01 - 10
     1
02 - 20
     -2
03 - 30
     3
04 - 40
     4
05 - 50
     5

但我希望结果是:

01 - 10
02 - 20
03 - 30
04 - 40
05 - 50
     

IE,我希望,
01 - 10 模式,并且,
不包括任何个人:1 和 -2 以及“3 和 ;4 和 .5,如顶部问题中所述。

反之亦然,即选择除“01 - 10”模式之外的每一行
例如:

This is the first one :1
This is the second one -2
This is the third one "3
This is the forth one ;4
This is the fifth one .5

我想知道 01 - 10 情况下的正则表达式模式,反之亦然,这样我就可以将两个单独生成的结果保存在单独的文件中。

【问题讨论】:

  • 使用^(?!0(\d) - \g{1}0$).*进行匹配并替换为空字符串。
  • 感谢您的快速回复,但请您详细说明一下,以便我了解此正则表达式的工作原理
  • 我正在使用 ATOM 文本编辑器
  • 我对此还有一个疑问 - 它是否也适用于 01:10 之类的模式,并稍作修改,例如 ^(?!0(\d):\g{1}0$).* ?

标签: regex atom-editor


【解决方案1】:

你可以使用这个正则表达式:

^(?!\d{2}\h*[:-]\h*\d{2}\h*$).*[\r\n]

RegEx Demo

正则表达式详细信息:

  • ^:开始
  • (?!: 开始负前瞻
    • \d{2}:匹配2位数字
    • \h*[:-]\h*:匹配 0 个或多个水平空格后跟 :- 后跟 0 个或多个水平空格
    • \d{2}:匹配 2 位数字
    • \h*:匹配 0 个或多个空格
    • $:行尾
  • ): 结束负前瞻
  • .*:匹配任何东西
  • [\r\n]: 匹配 1+ 个换行符
  • 替换为空字符串,删除所有匹配行

反向删除

要删除数字对线,您可以使用:

^(?=\d{2}\h*[:-]\h*\d{2}\h*$).*[\r\n]+

RegEx Demo 2

【讨论】:

  • 非常感谢您抽出时间来解释您提供的正则表达式的详细工作原理...这真的很有帮助...祝您有美好的一天!!!
  • 只是一个澄清。你还想保留12:89 这样的行吗?因为问题提到了except 01 - 10 pattern
  • 是的,如果模式像 12:89 一样,只需单击一下,这样我就可以更好地了解正则表达式的工作原理......但再次感谢您的详细解释
  • @AkshayaAmar 您是否对0x - x0 的模式或由连字符分隔的任何两位数特别感兴趣?根据您问题中的示例,前者似乎是正确的。请注意,另一个答案将保留任何两位数字,以 ` - ` 分隔(例如,55 - 23)。这就是你想要的吗?
  • 你可以use thisthis
【解决方案2】:

使用这个:

^(?!\d\d\s-\s\d\d).*

演示:https://regex101.com/r/t4qrh0/1

【讨论】:

  • 感谢您的快速回复...我可以使用相同的正则表达式吗 ^(?!\d\d\s:\s\d\d).* 像 01:10 这样的模式?
  • ^(?!\d\d\s:\s\d\d).* 如果它是 "01 : 10" (带空格),但如果它是 01:10 (没有空格)那么你需要 ^(?!\d\d:\d\d).*
  • 您可以打开我发布的链接并使用正则表达式,您会看到实时结果:)
  • 非常感谢您的澄清和链接...祝您有美好的一天!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多