gpt4 book ai didi

java - 如何在数字模式之间允许特定分隔符

转载 作者:行者123 更新时间:2023-12-02 03:30:45 24 4
gpt4 key购买 nike

我有一个很大的 Java 正则表达式模式,由 OR (|) 连接的多个子模式组成。我想允许在数字之间的任意位置使用多个分隔符。

例如,我有以下模式 "(3[47][0-9]{13})|(56022[1-5][0-9]{10}|(5610)[ 0-9]{12})"。如何允许使用以下分隔符:等于 (=)、反斜杠 (\)、点 (.)、连字符 ( -)和空白()。

这些分隔符可以出现在与数字模式匹配的数字之间的任意位置(开始和结束除外)和任意次数。

最佳答案

您必须插入 [\s=\\.-]* 模式(它匹配零个或多个空格、=\.-) 位于所有数字匹配模式之间,并将 \d{X} 转换为 \d(?:[\s=\\.-]*\d){X-1} 模式:

(3[\s=\\.-]*[47][\s=\\.-]*[0-9](?:[\s=\\.-]*[0-9]){12})|(5[\s=\\.-]*6[\s=\\.-]*0[\s=\\.-]*2[\s=\\.-]*2[\s=\\.-]*[1-5][\s=\\.-]*[0-9](?:[\s=\\.-]*[0-9]){9}|(5[\s=\\.-]*6[\s=\\.-]*1[\s=\\.-]*0)[\s=\\.-]*[0-9](?:[\s=\\.-]*[0-9]){11})

请参阅regex demo

在 Java 字符串文字中使用模式时,不要忘记使用双反斜杠:

String part_of_regex = "(3[\\s=\\\\.-]*[47][\\s=\\\\.-]*[0-9](?:[\\s=\\\\.-]*[0-9]){12})|(5[\\s=\\\\.-]*6[\\s=\\\\.-]*0[\\s=\\\\.-]*2[\\s=\\\\.-]*2[\\s=\\\\.-]*[1-5][\\s=\\\\.-]*[0-9](?:[\\s=\\\\.-]*[0-9]){9}|(5[\\s=\\\\.-]*6[\\s=\\\\.-]*1[\\s=\\\\.-]*0)[\\s=\\\\.-]*[0-9](?:[\\s=\\\\.-]*[0-9]){11})";

关于java - 如何在数字模式之间允许特定分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56887278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com