gpt4 book ai didi

regex - awk FPAT 变量 : Working

转载 作者:行者123 更新时间:2023-12-04 14:59:29 32 4
gpt4 key购买 nike

我已经可以从GNU page of GAWK了解它可以使用 FPAT 处理数据中的分隔符变量,但我无法理解它是如何工作的。对于 CSV 文件,FPAT 值为:

FPAT = "([^,]+)|(\"[^\"]+\")"

使用数据:
abc,"pqr,mno"

第一个分组表达式的计算结果为所有内容,即不是逗号,这应该取 "abc"作为数据然后第一次出现逗号失败。现在我的问题是接下来会发生什么?由于第一个分组表达式失败,正则表达式是否会使用 or 条件从逗号后的字符继续?但第一个分组表达式对逗号后的所有数据仍然有效,因此可能需要 "pqr作为下一个数据?

最佳答案

因此,字段模式描述如下。

不包含逗号且字符串长度大于零的字符串(不匹配空字符串):

[^,]+

或者以双引号开头和结尾的字符串,并且至少包含一个不是双引号的字符(为了可读性而省略了转义反斜杠):
"[^"]+"      

Regular expression engine match from the beginning of the string and try to match as much as possible given the patterns.

abc,"pqr,mno" 

所以 abc是从字符串开头与任一模式匹配的最长字符串,因此变为 $1 .下一个字符 ,不能被任一模式匹配,所以正则表达式引擎只是移动到下一个字符 " with 开始匹配第二个模式。这匹配到行尾 "pqr,mno"是一个以双引号开头和结尾的字符串,并且至少包含一个非双引号字符。因此 "pqr,mno"成为 $2备案 abc,"pqr,mno" .

关于regex - awk FPAT 变量 : Working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378923/

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