我正在尝试从不同的字符串中提取引用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不是裁判的一部分。
发布于 2018-12-22 14:55:39
要匹配这两种不同的格式,可以使用一个带有交替的单个捕获组
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+乘以任何字符类
)闭捕获群一种更广泛的模式可能是重复1+次数、数字和连字符,并在最后匹配字符类[A-Z0-9/.]+。
Ref\. ((?:\d+(?: [\d-]+)+)*[A-Z0-9/.]+)发布于 2018-12-22 14:57:05
这里有一种方法可以使用带有缓和惰性点的负前瞻来实现这一点:
Ref\.?\s+((?!\s+[^A-Z0-9])[A-Z0-9/. -])*(?= )
这种模式假定引用数字仅由数字和大写字母组成。这里的逻辑是保持消费,只要我们前面看不到的是一个空格,后面除了一个数字或大写字母之外的任何东西。最后的(?= )展望还确保模式在匹配引用号中的最后一个项之后停止。
https://stackoverflow.com/questions/53896628
复制相似问题