gpt4 book ai didi

正则表达式 - 匹配最短的可能数量似乎不起作用

转载 作者:太空狗 更新时间:2023-10-29 12:43:13 27 4
gpt4 key购买 nike

我想删除 CSV 文件中匹配双引号内的逗号。这里的关键是它必须在匹配的双引号之间。这个 RexExp 似乎不起作用:

".*?,.*?"

如果引入问号,则不会发现任何内容。所以以下不起作用:

s/\(".*?\),\(.*?"\)/\1;\2/g

下面一行是输入测试行。它与最短的不匹配。

21,C,101,1,,W,D,,"AAAAAAAA,, RBBBBBB,",CCCCCCCCCC DD EEEEEEEEEE,FFFFFF GGGGGGG HHHHHHHHH,III 101 JJ,,,,KKKKKKK LLLLLLLL M'MMMM N,"OOO, P'PPPP QQQQQQQQ RR R",SSSSSSSSSSSS TTTTTTTTTT,UUU 101 VV,,,,,12/1/1998,1/1/2050,ZZZZZZ

我想将 "AAAAAAAA,, RBBBBBB," 中的逗号更改为分号 "AAAAAAAA;; RBBBBBB;",以及 "OOO, P 'PPPP QQQQQQQQ RR R""OOO; P'PPPP QQQQQQQQ RR R" 不更改输入行中的任何其他逗号。

最佳答案

您的正则表达式有一个基本问题:. 可以匹配任何字符,包括引号。惰性量词并不能解决这个问题,它只是让它在简单的情况下起作用。

还有,如果有多个逗号,你想怎么办

试试这个:

"[^",]*?,[^",]*"

或者,处理引号内的多个逗号:

"([^",]*?,)+[^",]*"

请注意,这个正则表达式仍然可以匹配不需要的文本,如果你想完全避免这种情况,你必须使匹配行开始 anchor 和真正的引号对变得更加复杂,而不仅仅是任何两个带有逗号的引号。

关于正则表达式 - 匹配最短的可能数量似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com