gpt4 book ai didi

正则表达式 - 如果第一个数字是 1 返回 1 但如果它是 145 返回 145 但如果它的 133 返回 133

转载 作者:行者123 更新时间:2023-12-01 11:33:18 27 4
gpt4 key购买 nike

这是我的正则表达式 demo

如问题所述:

如果第一个数字是 1 则返回 1 但如果是 145 则返回 145 但如果是 133 则返回 133

样本数据a:

K'8134567
K'81345678
K'6134516789
K'61345678
K'643456
K'646345678
K'1234567890
K'12345678901
K'1454567890 <<<--- want 145 returned and not 1
K'13345678901 <<<--- want 133 returned and not 1
K'3214567890123
K'32134567890123
K'3654567890123
K'8934567890123
K'6554567890123

正则表达式:

K'(?|(?P<name1>81)\d+|(61)\d+|(64)\d+|(1)\d+|(44)\d+|(86)\d+|(678)\d+|(41)\d+|(49)\d+|(33)\d+|(685)\d+|(\d{1,3})\d+)

正则表达式解释:

我对K'之后的数字感兴趣
我希望使用正则表达式来执行此操作,但不确定是否可以完成。
我想要的是:
如果数字以 81 开头,则返回 81
如果数字以 61 开头,则返回 61
...如果数字以我不感兴趣的内容开头,则返回其他(或其 1-3 的第一个数字)

以上标准有效:

但我的问题是如何执行以下操作:
如果第一个数字是 1 则返回 1 BUT
如果第一个数字是 1,第二个和第三个数字是 45,则返回 145 而不要只返回 1
如果第一个数字是 1,第二个和第三个数字是 33,则返回 133 而不是只返回 1

我想我必须在正则表达式 |(1)\d+| 的这一部分中放一些东西

其他问题供自己引用:正则表达式是否首先对数据进行排序?正则表达式搜索的顺序对其实现方式是否重要?我真的不想要这个。

最佳答案

你可以使用这个正则表达式:

K'(?P<name1>81|61|64|44|86|678|41|49|33|685|1(?:33|45)?|\d{2,3})\d+

Updated RegEx Demo

关于正则表达式 - 如果第一个数字是 1 返回 1 但如果它是 145 返回 145 但如果它的 133 返回 133,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951683/

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