gpt4 book ai didi

python - 用于解析所有行的正则表达式以字母数字代码开头并以价格结尾

转载 作者:行者123 更新时间:2023-12-01 04:01:10 26 4
gpt4 key购买 nike

我编写了一个小 python 脚本来解析大型数据文档的所有行。

我收集了某种类型的行:

LLNNNLL [混合数据和数字] 1.650,00

NNNNNN-LNN [混合数据和数字] 49,00

LLNNNL [混合数据和数字] 208,00

LLNNNLLL [混合数据和数字] 3,00

这是我的正则表达式模式:pattern = "^([A-Z\-0-9]){4,10}.*\d+,\d{2}"有更准确的方法吗?例如:如何指定每一行必须至少包含数字和字母?

最佳答案

how can I specify that each row must have at least numbers AND letter?

这可以在积极前瞻的帮助下完成。

pattern = "^(?=[^A-Z]*[A-Z])(?=\D*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}"

(?=[^A-Z]*[A-Z]) 将在字符串开头触发,并且需要字符串中至少有一个 A-Z 字母。 (?=\D*\d) 也将被触发(在前面的前瞻返回 true 后),并且需要至少一位数字。如果字符串中没有数字,则匹配失败(找不到匹配项)。

此外,如果数字必须位于“行”的末尾,请添加 $ anchor (字符串末尾)。

此外,请注意 .* 将“吃掉数字(应该与 \d+,\d{2} 匹配)”,直到 a 之前的数字。逗号,因为 .* 模式是贪婪的。这里没有区别除非你想捕获 float 。然后,使用惰性匹配 .*?.

如果模式不区分大小写,请在编译模式时使用不区分大小写的标志 re.I,或向模式添加 (?i) 内联修饰符开始。

更新

如果你想将条件限制为第一个非空白 block ,你可以使用

^(?=[0-9-]*[A-Z])(?=[A-Z-]*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}
^^^^^^^ ^^^^^^^

我们检查可选的 0+ 数字/连字符后是否有一个字母以及 0+ 字母或连字符后是否有一个数字(请参阅 demo )或

^(?=\S*[A-Z])(?=\S*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}

我们检查 0+ 个非空白字符 (\S*) 后的字母和数字。请参阅another demo

关于python - 用于解析所有行的正则表达式以字母数字代码开头并以价格结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36479312/

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