【问题标题】:Regular Expression - Match only separator within parentheses正则表达式 - 仅匹配括号内的分隔符
【发布时间】:2017-02-24 19:35:37
【问题描述】:

我有一个解析 CSV 文件的程序。不幸的是,如果分隔符在括号内,程序将无法处理。现在我想找到一个正则表达式,如果它在括号内,它会找到分隔符。

Name;Zip;Comment
Smith,12345;"Weird comment with ; inside"

以下正则表达式返回整个评论字段,但我只想要 ;括号内的字符

("[^;]*;[^;]*")

【问题讨论】:

    标签: regex


    【解决方案1】:

    你可以试试这样的正则表达式

    r\".*(;).*"\
    

    在这种情况下,正则表达式将匹配整个评论。但是,捕获组 1(括号内的部分)将与双引号内的 ; 匹配。

    【讨论】:

    • 不幸的是,我无法指定应该使用哪个捕获组。正则表达式的整个匹配将替换为我选择的字符。
    【解决方案2】:

    您应该使用以下 regex 来捕获整个评论并使用捕获的组替换分号:

    (".*?)(;\s)(.*?")
    

    input        >>  Name;Zip;Comment
                     Smith,12345;"Weird comment with ; inside"
    match        >>  (".*?)(;\s)(.*?")
    replace with >>  $1$3
    output       >>  Name;Zip;Comment
                     Smith,12345;"Weird comment with inside"
    

    demo / explanation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2011-07-18
      • 2011-08-12
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多