我正在解析ISBN的一些搜索查询文本。每一行可能包含零或多个ISBN10s、零或多个ISBN13s以及其他不相关的数字。文本已被净化为只包含[a-zA-Z0-9 ]
,但相关数字之间可能有空白。我已经成功地编写了一些正则表达式片段来解析文本,但我不知道如何让它们按照我想要的顺序执行。
首先,下面是数据中的文本示例行:
foo ISBN10 013284 1649 0132841648 ISBN13 9 78013 2841641 9780132841641 2013 bar
我需要(按这个顺序):
([9][7][8-9]\d{10})
。(\d{10})
([9]\s*[7]\s*[8-9]\s*(\s*\d){10})
(\d(\s*\d){9})
这完成了对完整ISBN13s的搜索,然后完成ISBN10s,然后是分段ISBN13s,最后是分段ISBN10s。但是,如果我简单地将它们粘贴到一起,由|
分隔,那么RegEx引擎希望对每个字符进行计算(1,2,3,4)。在考虑计算#2之前,我如何完成搜索整个字符串中的表达式#1?
发布于 2015-11-24 01:58:41
执行四个replaceAll
,并在每个步骤中删除成功的匹配(即用""
替换它们)。
https://stackoverflow.com/questions/33884072
复制相似问题