首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在RegEx中强制执行匹配顺序

在RegEx中强制执行匹配顺序
EN

Stack Overflow用户
提问于 2015-11-24 01:49:50
回答 1查看 158关注 0票数 3

我正在解析ISBN的一些搜索查询文本。每一行可能包含零或多个ISBN10s、零或多个ISBN13s以及其他不相关的数字。文本已被净化为只包含[a-zA-Z0-9 ],但相关数字之间可能有空白。我已经成功地编写了一些正则表达式片段来解析文本,但我不知道如何让它们按照我想要的顺序执行。

首先,下面是数据中的文本示例行:

foo ISBN10 013284 1649 0132841648 ISBN13 9 78013 2841641 9780132841641 2013 bar

我需要(按这个顺序):

  1. 搜索整个字符串以查找([9][7][8-9]\d{10})
  2. 只搜索中尚未与匹配的(\d{10})
  3. 只搜索中尚未与匹配的([9]\s*[7]\s*[8-9]\s*(\s*\d){10})
  4. 只搜索中尚未与匹配的(\d(\s*\d){9})

这完成了对完整ISBN13s的搜索,然后完成ISBN10s,然后是分段ISBN13s,最后是分段ISBN10s。但是,如果我简单地将它们粘贴到一起,由|分隔,那么RegEx引擎希望对每个字符进行计算(1,2,3,4)。在考虑计算#2之前,我如何完成搜索整个字符串中的表达式#1?

EN

回答 1

Stack Overflow用户

发布于 2015-11-24 01:58:41

执行四个replaceAll,并在每个步骤中删除成功的匹配(即用""替换它们)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33884072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档