【发布时间】:2017-02-24 19:35:37
【问题描述】:
我有一个解析 CSV 文件的程序。不幸的是,如果分隔符在括号内,程序将无法处理。现在我想找到一个正则表达式,如果它在括号内,它会找到分隔符。
Name;Zip;Comment
Smith,12345;"Weird comment with ; inside"
以下正则表达式返回整个评论字段,但我只想要 ;括号内的字符
("[^;]*;[^;]*")
【问题讨论】:
标签: regex
我有一个解析 CSV 文件的程序。不幸的是,如果分隔符在括号内,程序将无法处理。现在我想找到一个正则表达式,如果它在括号内,它会找到分隔符。
Name;Zip;Comment
Smith,12345;"Weird comment with ; inside"
以下正则表达式返回整个评论字段,但我只想要 ;括号内的字符
("[^;]*;[^;]*")
【问题讨论】:
标签: regex
你可以试试这样的正则表达式
r\".*(;).*"\
在这种情况下,正则表达式将匹配整个评论。但是,捕获组 1(括号内的部分)将与双引号内的 ; 匹配。
【讨论】:
您应该使用以下 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"
【讨论】: