You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EDI文件正则表达式需求:提取RJC*K3后第2与第3个*间的字符

提取EDI字符串指定位置字符的解决方案

需求场景:从以下EDI格式字符串中提取目标字符:

RJCK3:0*20180105*U*127.35 
RJCK3:0*20180105*B*127.35

需要提取每行中RJCK3:之后,第2个与第3个*之间的单个字符(第一行取U,第二行取B)

嘿,我来给你分享两个实用的方法,轻松搞定这个提取需求:

  • 方法一:字符串分割法
    这是最直接的方式,利用字符串分割功能按*拆分后,直接取对应位置的元素。以Python为例:

    # 示例输入行
    line1 = "RJCK3:0*20180105*U*127.35"
    line2 = "RJCK3:0*20180105*B*127.35"
    
    # 按*分割字符串,取索引为2的元素(索引从0开始计数)
    target_char1 = line1.split('*')[2]
    target_char2 = line2.split('*')[2]
    
    print(target_char1)  # 输出:U
    print(target_char2)  # 输出:B
    

    只要你的EDI格式固定不变,这个方法简单高效,完全能满足需求。

  • 方法二:正则表达式匹配
    如果需要更严谨的匹配(比如确保前缀是RJCK3:,避免格式异常时提取错误),可以用正则精准定位目标字符:

    import re
    
    # 正则模式:匹配RJCK3:开头,跳过前两个*,捕获中间的单个字符
    regex_pattern = r'RJCK3:.*?\*.*?\*([A-Z])\*'
    
    line1 = "RJCK3:0*20180105*U*127.35"
    line2 = "RJCK3:0*20180105*B*127.35"
    
    match_result1 = re.search(regex_pattern, line1)
    match_result2 = re.search(regex_pattern, line2)
    
    if match_result1:
        print(match_result1.group(1))  # 输出:U
    if match_result2:
        print(match_result2.group(1))  # 输出:B
    

    这个方法适配性更强,即使字符串前后有微小变化,只要核心格式符合,就能准确提取目标字符。

内容的提问来源于stack exchange,提问作者Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:17:15