Python 解析所有行的正则表达式以字母数字代码开始,以价格结束

Python 解析所有行的正则表达式以字母数字代码开始,以价格结束,python,regex,Python,Regex,我编写了一个小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}” 有没有更准确的方法? 我如何指定每行必须至少有数字和字母 如何指定每行必须至少包含数字和字母 这可以通过正面形象的帮助来实

我编写了一个小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}”
有没有更准确的方法? 我如何指定每行必须至少有数字和字母

如何指定每行必须至少包含数字和字母

这可以通过正面形象的帮助来实现

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

此外,如果数字必须位于“行”的末尾,则添加一个
$
锚定(字符串的末尾)

此外,请注意,
*
将“把数字(应该与
\d+,\d{2}
匹配)吃掉,直到逗号前的数字,因为
*
模式是贪婪的。除非您想要捕获浮点数,否则在这里没有区别。然后,使用延迟匹配
*?

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

更新

如果要将条件限制为第一个非空白块,可以使用

^(?=[0-9-]*[A-Z])(?=[A-Z-]*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}
    ^^^^^^^         ^^^^^^^
其中,我们检查可选的0+数字/连字符后是否有一个字母,以及0+字母或连字符后是否有一个数字(请参阅)或


我们检查0+非空白字符后的字母和数字(
\S*
).See

需要更多关于您当前正在做的事情的说明。什么不起作用或者您的预期输出是什么..您不喜欢该模式的哪些方面?此文件包含400多页这种类型的页面。我只希望有一个更准确的正则表达式模式,因为我用它删除了1400行。否则,我只想知道该模式是否有效这似乎是正确的,好的,但它也匹配只有数字或只有字母的行。我希望只匹配以字母数字代码开头的行,该代码可以包含“-”字符。因此,开头的“单词”应该同时包含字母和数字?使用我还有以字母开头,后跟数字的行(NNNNNN-LNN)[混合数据和数字]49,00)。你能匹配这种类型的行吗?嗯,我不明白
N
L
代表什么,让我试着通过字母开头和数字来帮助判断:这有用吗?有用吗?很抱歉没有写这么长时间。是的,L=字母,N=数字。它可以以字母或数字开头,但每个代码都必须包含字母and numbersOk,所以该条件只适用于第一个非空白块,对吗?然后
pattern=“^(?=[0-9-]*[A-Z])(?=[A-Z-]*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}”
应该可以正常工作。
^(?=[0-9-]*[A-Z])(?=[A-Z-]*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}
    ^^^^^^^         ^^^^^^^
^(?=\S*[A-Z])(?=\S*\d)[A-Z0-9-]{4,10}.*\d+,\d{2}