gpt4 book ai didi

c# - 没有单个字母定界符的 RegEx 匹配

转载 作者:行者123 更新时间:2023-11-30 19:52:10 25 4
gpt4 key购买 nike

Medicare Eligibility EDI Example Responses 是我要匹配的。

我有一个看起来像这样的字符串:

LN:SMITHbbbbbbbbFN:SAMANTHAbbBD:19400515PD:1BN:123456PN:9876543210GP:ABCDEFGHIJKLMNOID:123456789012345bbbbbPC:123PH:8005551212CD:123456PB:123ED:20060101TD:2070101LC:NFI:12345678FE:20070101FT:20080101

I need a set of matches that look like this:

Key | Value-------------------LN  | SMITHbbbbbbbbFN  | SAMANTHAbbBD  | 19400515... etc

I've been dealing with this all day, and I can't seem to get an acceptable matching scenario. I'm about to program it procedurally with a for loop and finding indexes of colons if I can't figure something out.

I've tried using negative lookahead and I'm not getting anywhere. This is C#, and I'm using this tester (.Net) while I'm testing, along with The Regex Coach (non .Net).

I've tried using this:

([\w]{2})\:(?![\w]{2}\:)

但这只会匹配键及其冒号,如“LN:”、“FN:”等。

如果我使用:

([\w]{2})\:(.+?)([\w]{2})\:

它也消耗下一个匹配的两个字符键和冒号,导致我只匹配所有其他键/值对。

有没有办法让我在 .Net 中使用 RegEx 正确地匹配这些,或者我是否坚持使用更程序化的解决方案?请记住,我不能假设键总是大写字母。它们可能包含数字,但它们始终是两个字符,然后是一个冒号。

提前感谢我能得到的任何帮助。

最佳答案

我认为您想要的是正前瞻,而不是负前瞻,这样您就可以找到当前位置之前的键冒号组合,但您不会使用它。这似乎适用于您的测试示例:

([\w]{2})\:(.+?)(?=[\w]{2}\:|$)

产量:

LN: SMITHbbbbbbbbFN: SAMANTHAbbBD: 19400515PD: 1BN: 123456PN: 9876543210...

注意:我在测试输出中添加了冒号,它们不会被正则表达式捕获。

编辑:谢谢,道格拉斯,我已经编辑了正则表达式以捕获字符串结尾,因此也捕获了最后一个条目。

关于c# - 没有单个字母定界符的 RegEx 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/372009/

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