如何在Python中使用非密码相关的正则表达式将3组中的2组匹配?

Brittenb

我已经看过这个答案这个答案以试图找出我的问题,但是我不确定它们是否直接适用,因为a)我没有始终必须满足的条件,并且b)文档太乱了,以至于任何三个匹配都可能导致大量误报。

因此,话虽如此,这是我的问题。我有一些要匹配的文本行,如下所示:
x = "10/04 Some brief description blah blah blah 45.00"

一切之间的间隔都是凌乱的。然后,我想匹配一些文本行,如下所示:
y = "VJ../VI Another stupid brief description 1000.00"
z = "11/13 This is another description LO05.13"

我当前使用的正则表达式是这样的:
regex = r"^(\d\d\s?[1/]\s?\d\d\s?[1/]\d\d)\s+(\S+(?:\s+\S+)*?)\s+(-?\s?[\d,]+\.\d\d)"

问题在于iny regex不匹配,因为字符串的开头没有日期。OCR流程混乱了。但是,我们仍然知道这是有效行,因为它具有描述和金额。两者regex都不匹配z,因为金额不是一堆数字,但是我们知道这是一笔交易,因为有日期和说明。

我已经考虑过将正则表达式更改为如下形式:
regex = r"^(\d\d\s?[1/]\s?\d\d\s?[1/]\d\d\s+)?(\S+(?:\s+\S+)*?)\s+(-?\s?[\d,]+\.\d\d)?"

但是我担心这将与文档中的所有内容(即“提款和借方”)相匹配。由于文本行的两个可选部分位于文本更一致的部分的相对两端,所以我不确定如何|像我所链接问题的解决方案中那样实现

我最好的选择就是只制作两个与链接的正则表达式|吗?
regex = r"^(\d\d\s?[1/]\s?\d\d\s?[1/]\d\d\s+)?(\S+(?:\s+\S+)*?)\s+(-?\s?[\d,]+\.\d\d)|^(\d\d\s?[1/]\s?\d\d\s?[1/]\d\d)\s+(\S+(?:\s+\S+)*?)\s+(-?\s?[\d,]+\.\d\d)?"

任何援助将不胜感激。谢谢

威克多·斯特里比尤(WiktorStribiżew)

使用OCR输入,很难制定出100%安全的方法。在没有实际输出的情况下,我们只能提出有关如何处理每个具体案例的一般思路。

在这里,我建议

r'^(\w+[^\s/]*/\w{2}\b.*?)\s*(\d+\.\d{2})$'

正则表达式演示

该模式是一种通用模式:

  • ^ -字符串/行的开头
  • (\w+[^\s/]*/\w{2}\b.*?)-1+个字母数字符号或下划线(也许\w+可以用代替\w),后跟0+个非空格和非/字符,后跟/,然后正好2个“单词”字符,后跟一个单词边界\b,然后尽可能少地0 +换行符以外的字符
  • \s* -0+空格
  • (\d+\.\d{2}) -最终的浮点数,整数部分可以有1+个数字,小数部分可以有2个数字
  • $ -字符串/行末

在使用限制量词字符类的情况下,您可以进一步微调图案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在python 3.7中使用正则表达式来具有2或3组?

来自分类Dev

如何在python中使用正则表达式re.sub()可选匹配组?

来自分类Dev

如何在python中使用正则表达式re.sub()可选匹配组?

来自分类Dev

如何在Python中获取匹配正则表达式的组名?

来自分类Dev

如何在Python中从正则表达式匹配和提取组?

来自分类Dev

如何在Python中使用分类正则表达式组

来自分类Dev

使用Python正则表达式在非捕获组中的多个捕获组

来自分类Dev

如何在Java中使用正则表达式非捕获组进行字符串替换

来自分类Dev

如何在不匹配的组之后排除匹配的组-正则表达式

来自分类Dev

如何在我的正则表达式中在 C# 中使用未命名的正则表达式组?

来自分类Dev

如何在正则表达式中匹配不同的组

来自分类Dev

如何在递归正则表达式中匹配一个组?

来自分类Dev

如何使用基于字符的正则表达式将值匹配到单独的可选组中?

来自分类Dev

如何在Linux中使用正则表达式捕获组重命名文件?

来自分类Dev

如何在同一个正则表达式中使用捕获的组

来自分类Dev

如何在docker-compose中使用正则表达式停止容器组

来自分类Dev

如何在熊猫替换功能中使用正则表达式捕获组

来自分类Dev

您如何在emacs中使用9个以上的正则表达式捕获组?

来自分类Dev

如何在Linux中使用正则表达式捕获组重命名文件?

来自分类Dev

如何在正则表达式中使用 qantizer 通过重复模式获取组

来自分类Dev

如何在 .nanorc 文件中使用正则表达式捕获组?

来自分类Dev

如何用命名组在Python中编写正则表达式以匹配此规则?

来自分类Dev

如何使用GPRename的正则表达式功能将匹配组重新插入“替换”中?

来自分类Dev

如何使用GPRename的正则表达式功能将匹配组重新插入“替换”中?

来自分类Dev

正则表达式如何匹配匹配的组

来自分类Dev

如何在NiFi表达式语言中使用正则表达式捕获组变量?

来自分类Dev

正则表达式匹配组

来自分类Dev

如何在python正则表达式中获取所有可能的子组?

来自分类Dev

正则表达式如何在json表达式中获取组

Related 相关文章

  1. 1

    如何在python 3.7中使用正则表达式来具有2或3组?

  2. 2

    如何在python中使用正则表达式re.sub()可选匹配组?

  3. 3

    如何在python中使用正则表达式re.sub()可选匹配组?

  4. 4

    如何在Python中获取匹配正则表达式的组名?

  5. 5

    如何在Python中从正则表达式匹配和提取组?

  6. 6

    如何在Python中使用分类正则表达式组

  7. 7

    使用Python正则表达式在非捕获组中的多个捕获组

  8. 8

    如何在Java中使用正则表达式非捕获组进行字符串替换

  9. 9

    如何在不匹配的组之后排除匹配的组-正则表达式

  10. 10

    如何在我的正则表达式中在 C# 中使用未命名的正则表达式组?

  11. 11

    如何在正则表达式中匹配不同的组

  12. 12

    如何在递归正则表达式中匹配一个组?

  13. 13

    如何使用基于字符的正则表达式将值匹配到单独的可选组中?

  14. 14

    如何在Linux中使用正则表达式捕获组重命名文件?

  15. 15

    如何在同一个正则表达式中使用捕获的组

  16. 16

    如何在docker-compose中使用正则表达式停止容器组

  17. 17

    如何在熊猫替换功能中使用正则表达式捕获组

  18. 18

    您如何在emacs中使用9个以上的正则表达式捕获组?

  19. 19

    如何在Linux中使用正则表达式捕获组重命名文件?

  20. 20

    如何在正则表达式中使用 qantizer 通过重复模式获取组

  21. 21

    如何在 .nanorc 文件中使用正则表达式捕获组?

  22. 22

    如何用命名组在Python中编写正则表达式以匹配此规则?

  23. 23

    如何使用GPRename的正则表达式功能将匹配组重新插入“替换”中?

  24. 24

    如何使用GPRename的正则表达式功能将匹配组重新插入“替换”中?

  25. 25

    正则表达式如何匹配匹配的组

  26. 26

    如何在NiFi表达式语言中使用正则表达式捕获组变量?

  27. 27

    正则表达式匹配组

  28. 28

    如何在python正则表达式中获取所有可能的子组?

  29. 29

    正则表达式如何在json表达式中获取组

热门标签

归档