首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用regex向前看并找到所需字符串的结尾?

如何使用regex向前看并找到所需字符串的结尾?
EN

Stack Overflow用户
提问于 2018-12-22 14:49:35
回答 2查看 480关注 0票数 2

我正在尝试从不同的字符串中提取引用id,在这些字符串中,ref id看起来可能非常不同。我面临的困难是,如何知道何时完成参考资料id和正常的文本继续。

文本和正则表达式示例

文本参考文献。027/7203.00更多案文 -实例2: 文本参考文献。01 733 7720 4055-07 5 21 28 21全文 -示例3:案文参考。126281 more更多文本 -示例4:案文参考。WAY101A.FT6141更多文本 -示例5:案文参考。01 774 7699 4134-07 5 22 15 01全文

Regex:参考文献??((?:A\d./+)(A-Z0-9+)?x(?:\d.+))

示例2,5.说明了获取ref id的其余部分的问题。

例3,4说明了在正则表达式上有另一个单词存在假阳性的问题。Schoko不是裁判的一部分。

EN

回答 2

Stack Overflow用户

发布于 2018-12-22 14:55:39

要匹配这两种不同的格式,可以使用一个带有交替的单个捕获组

代码语言:javascript
复制
Ref\. (\d+(?: \d+){2} \d+-\d+(?: \d+){2} [A-Z0-9]+|[A-Z0-9/.]+)

解释

  • Ref\.匹配引用`后面跟着一个空格
  • (捕获组
    • \d+(?: \d+){2} \d+-\d+(?: \d+){2} [A-Z0-9]+匹配模式如01 733 7720 4055-07 5 21
    • |
    • [A-Z0-9/.]+匹配1+乘以任何字符类

  • )闭捕获群

Regex演示

一种更广泛的模式可能是重复1+次数、数字和连字符,并在最后匹配字符类[A-Z0-9/.]+

代码语言:javascript
复制
Ref\. ((?:\d+(?: [\d-]+)+)*[A-Z0-9/.]+)

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2018-12-22 14:57:05

这里有一种方法可以使用带有缓和惰性点的负前瞻来实现这一点:

代码语言:javascript
复制
Ref\.?\s+((?!\s+[^A-Z0-9])[A-Z0-9/. -])*(?= )

演示

这种模式假定引用数字仅由数字和大写字母组成。这里的逻辑是保持消费,只要我们前面看不到的是一个空格,后面除了一个数字或大写字母之外的任何东西。最后的(?= )展望还确保模式在匹配引用号中的最后一个项之后停止。

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

https://stackoverflow.com/questions/53896628

复制
相关文章

相似问题

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