嘿,我对RegEx完全不熟悉,也许有人可以帮我解决这个问题?
https://regex101.com/r/mS2oB5/4
我的正则表达式
(\w.+?)\t(\w.+?)\t(\w.+?)\t(\d)\t(\w.+?)\t(\w.+?)\t(\w.+?)\t(\w.+?)\t(\w.+?)\t(\w.+?)\t(\w.+?)\t(\w.+)
文本文件(制表符分隔)
C-380_TF-4318-028 none ID 4 none none 1.1 c 1.4 none none 26 RB 2,5%
C-366_TF-4269-012 none REW 7 none none 1.1 c 17.1 none none 28 RB 7%
C-1008_TF-4480-011 none none 0 WT H 1.1 c 17.16 none none 24 R
C-1008_TF-4480-006 none none 0 WT H 1.1 c 2 none none 36 R
C-388_TF-4351-022 none none 0 WM none 1.1 c 20.3 none none 21 R
C-388_TF-4351-019 none none 0 WM none 1.1 c 22.3 none none 32 R
C-397_TF-4437-001 none REW 7 WM none 1.1 c 26 none none 30 RB 7,5%
C-388_TF-4351-013 none none 0 WM none 1.3 b 17.3 none none 14 RB
C-366_TF-4269-004 none none 0 none none 2.1 17 none none n.d. R
C-1008_TF-4480-013 none REW 7 WT H 2.1 c 1 none none 28 RB
C-380_TF-4318-026 none REW 7 none none 2.1 c 1.2 none none 28 RB 2,5%
C-380_TF-4318-016 none none 0 none none 2.1 c 17.1 none none 28 RB 2,5%
C-380_TF-4318-015 none none 0 none none 2.1 c 6.36 none none 26 RB 10%
C-397_TF-4437-002 none none 0 WM none 2.3 c 15.2 none none 28 RB 5%
C-385_TF-4344-000b none ED 23 none none 2.3 c 2 10.4.3 none 26,5 CO 100%
C-385_TF-4344-000a none REW 7 none none 2.5.1 c 20.2 none none 30 RB 21%
C-366_TF-4269-022 none KW 7 none none 2.5.2 b 17.1 none none 10 RB 7%
为什么Expression会处理某些条目而不处理其他条目,我不知道?感谢您的帮助!
答案 0 :(得分:0)
实际问题是,您要求每个项目的长度至少为2个字符\w.+?
。 \w
匹配1个字符,.+?
匹配至少1个字符。最后\w.+
还需要至少2个符号。另外,请注意.
与\w
和\d
以及\t
相匹配,因此,您的正则表达式效率非常低。
处理文件的最佳方法是将其拆分为行,然后使用制表符拆分每行。当然,强烈建议使用CSV解析器。
仅出于教育目的,请参阅this regex,其中每行中的每个项目与[^\t]*
匹配 - 除了标签以外的0 +个字符,^
/ $
锚点,以减少回溯开销。