gpt4 book ai didi

c# - 用于捕获不跟其他字符的数字模式的 RegEx

转载 作者:行者123 更新时间:2023-11-30 15:14:05 24 4
gpt4 key购买 nike

我正在使用 C# 并希望使用 Regex 捕获 IP:PORT 但是如果在 PORT 之后字符是 如何使其不匹配: ?

测试一下 here

图案:

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[:\s]+(\d{2,5})(?!:)

扩展结果

1.22.234.255:8181:u:p // true, it should be false
1.22.234.255:80 // true
1.22.234.255 8080 // true
dddd1.22.234.255 80808 // true

最佳答案

问题是您的端口表达式 (\d{2,5}) 没有获取所有数字。在意外通过的表达式中,如果您查看匹配组,它们是 1.22.234.255818(不是 8181)。该表达式确实拒绝 1.22.234.255:8181,因为它后面跟着一个 :,但是然后考虑一个 3 位端口并接受 1.22.234.255:818 因为下一个字符是 1 而不是 :

对此进行补偿的一种方法是更改​​您的模式以拒绝冒号和数字:

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[:\s]+(\d{2,5})(?![0-9:])

关于c# - 用于捕获不跟其他字符的数字模式的 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56152754/

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