【问题标题】:get first occurrence of a space after last occurrence of parenthesis在最后一次出现括号后获得第一次出现的空格
【发布时间】:2017-07-05 06:18:51
【问题描述】:

我正在尝试分割字典文本文件(使用 Sublime 文本编辑器),并且需要在最后一个 ) 之后获得第一个空格,因为我需要用可以导入 Google 的分隔符替换它床单。

例如,以下:

abierto (masculine) open

abjaso (masculine); abjasio (masculine) Abkhaz

abogado (masculine); abogada (feminine); notario (masculine)    lawyer

应该是(注意_ 分隔符):

abierto (masculine)_    open

abjaso (masculine); abjasio (masculine)_    Abkhaz

abogado (masculine); abogada (feminine); notario (masculine)_   lawyer

我怎样才能做到这一点?


编辑:我试过/\)[^\)]+$/g - 得到一个) 后跟一个或多个非)字符,在字符串的末尾,贪婪......但它只是找到一个结果。

【问题讨论】:

    标签: javascript regex sublimetext3


    【解决方案1】:

    你可以使用

    \)(?!.*\))
    

    要查找最后出现的 ),然后将其替换为 )_,这将为您提供所需的结果。这是 ST3 的结果

    解释:

    \)   # find ")"
    (    # OPEN capturing group 1
      ?!    # negative lookahead, aka "do not match"
      .*    # anything until
      \)    # character ")"
    )    # CLOSE capturing group 1
    

    所以如果你有例如正则表达式a(?!b)并在“ab”、“ac”和“ad”上测试它,它只会匹配“a”如果它在“不匹配的东西之前” em>" b.所以在这里匹配“ac”和“ad”中的“a”。但不在“ab”中。在这里,) 被选中,直到)

    来自评论:

    你能帮忙解释一下吗?另外,你能解释一下为什么这在 Regex101 中不起作用吗? regex101.com/r/GFwrn5/1

    那是因为你没有在那里启用全局/g 标志。如果您启用它,它会完成这项工作。

    【讨论】:

    • 你能帮忙解释一下吗?另外,你能解释一下为什么这在 Regex101 中不起作用吗? regex101.com/r/GFwrn5/1
    • @Growler 更新了解释。如果您想了解更多信息,可以检查负前瞻here
    【解决方案2】:

    您可以使用贪婪匹配.*\) 来获取最后一个),使用此正则表达式进行匹配:

    /(.*\)) /
    

    然后将其替换为:

    $1_\t
    

    \t 用于制表符(您也可以使用 4 个空格代替 \t

    RegEx Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      相关资源
      最近更新 更多