【问题标题】:Regex match and replace正则表达式匹配和替换
【发布时间】:2012-12-12 23:26:02
【问题描述】:

我只需要将这些字符串的 开始"KEYWORD AAA/0010/0 " 中的主要模式匹配,并在 /0 并将其替换为任何其他字符串。它必须只发生在开始的实例上。

KEYWORD AAA/0010/0 
KEYWORD AAAAAA/0010/0
KEYWORD AAA/001000/0
KEYWORD AAA/0010/000
KEYWORD AAA/0010/0 Testing comment
KEYWORD AAA/0010/0 Testing comment KEYWORD AAA/0010/0 Testing comment
KEYWORD */*/*
KEYWORD ?/?/?

我已经尝试过了,但它不区分开始和中间的实例,并且与最后一个不匹配

^KEYWORD .*\/.*\/.*\s

任何帮助将不胜感激。

【问题讨论】:

  • 不清楚您要匹配表达式的哪个确切部分以替换。

标签: regex


【解决方案1】:

怎么样

^KEYWORD [^\s/]*\/[^\s/]*\/[^\s/]*(?:\s|$)

here on Regexr

最后一行不匹配,因为后面没有空格,所以我用空格或者字符串结尾(?:\s|$)替换它。

【讨论】:

    【解决方案2】:

    不贪婪的.*?(匹配到下一个/,甚至[^/]*),以及可选的\s\s?(用于最后一行),使得^KEYWORD .*?\/.*?\/.*?\s?^KEYWORD [^\/]*\/[^\/]*\/[^\/]*\s?

    【讨论】:

      【解决方案3】:

      我想你快到了。您的正则表达式与您的最后一个测试用例不匹配,因为末尾没有空格。试试这个:

      /^KEYWORD .*\/.*\/.*(\s|$)/
      

      【讨论】:

      • 这个几乎可以工作,但它匹配所有实例,而不仅仅是一行中的第一个实例。可能是我的问题不清楚。 +1
      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 2011-09-15
      • 2012-11-23
      • 2013-12-06
      相关资源
      最近更新 更多