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

如何使用OpenEdge查找字符串中指定单词后的目标单词?

OpenEdge查找指定字符串后目标单词的实现方法

方法一:分步定位(兼容低版本OpenEdge)

通过分步定位目标前缀和目标单词,逻辑清晰,适配所有OpenEdge版本:

  1. 先定位Excepteur在原字符串中的起始位置
  2. 截取该位置之后的子串(跳过Excepteur本身的长度)
  3. 在子串中查找sint的位置,最终换算回原字符串的绝对位置

示例代码:

DEFINE cString AS CHAR INIT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
DEFINE iExcepPos AS INTEGER.
DEFINE iSintPos AS INTEGER.

// 定位"Excepteur"的起始位置
iExcepPos = INDEX(cString, "Excepteur").

IF iExcepPos > 0 THEN DO:
    // 截取"Excepteur"之后的子串
    DEFINE cSubString AS CHAR = SUBSTRING(cString, iExcepPos + LENGTH("Excepteur")).
    // 在子串中查找"sint"的起始位置
    iSintPos = INDEX(cSubString, "sint").
    
    IF iSintPos > 0 THEN DO:
        // 计算在原字符串中的绝对位置
        iSintPos = iSintPos + iExcepPos + LENGTH("Excepteur") - 1.
        DISPLAY "找到目标单词,位置:" iSintPos.
    END.
    ELSE DO:
        DISPLAY "未找到目标单词".
    END.
END.
ELSE DO:
    DISPLAY "未找到'Excepteur'".
END.

方法二:正则表达式匹配(OpenEdge 11.4+)

利用OpenEdge的正则表达式功能,直接精准匹配Excepteur之后的完整sint单词,代码更简洁,还能避免误匹配包含sint的长单词:

示例代码:

DEFINE cString AS CHAR INIT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
DEFINE cPattern AS CHAR = 'Excepteur\W+\K\bsint\b'.
DEFINE iMatchPos AS INTEGER.

// 查找匹配位置
iMatchPos = REGEXP_MATCH(cString, cPattern, 1).

IF iMatchPos > 0 THEN DO:
    DISPLAY "找到目标单词,位置:" iMatchPos.
END.
ELSE DO:
    DISPLAY "未找到目标单词".
END.

正则规则说明:

  • Excepteur\W+:匹配Excepteur及后续的非单词字符(空格、标点等)
  • \K:重置匹配起点,忽略前面的匹配内容
  • \bsint\b:匹配完整的sint单词(\b代表单词边界)

方法选择建议

  • 若使用OpenEdge 11.4及以上版本,优先选择正则表达式方法,简洁高效且匹配精准。
  • 若需要兼容更低版本,分步定位法是稳妥的选择,逻辑直观易调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:40:48