gpt4 book ai didi

java - 正则表达式匹配除日期时间格式中包含的数字之外的所有数字

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:13 25 4
gpt4 key购买 nike

我目前正在寻找一个与(负)数字匹配的正则表达式,日期时间格式中包含的数字除外。

示例:

WHERE id=2 and date > 1990-11-10
=> 2

应该匹配。我尝试了几种解决方案,但没有一个给我结果。这是我已经尝试过的:

[-]?\d+[^(\d+-\d+-\d+)] => 字符类值超出范围

(?<=(=|>|<| ))[-]?\d+$ => 不错,但不匹配不在行尾的数字

(?<=(=|>|<| ))[-]?\d+ => 不排除日期时间格式的第一位数字

(?<=(=|>|<| ))[-]?\d+(<!(:|-)) => 后视模式无效。

最后一个解决方案似乎是最好的,但我不明白这个错误。我使用了这个链接http://www.regular-expressions.info/lookaround.html构建它们并用 rubular 进行测试。

这是我的测试表:http://rubular.com/r/2bXr53XTpq

顺便说一句:这是我们使用的代码:

 public static String formatCondition(String condition) {
if (condition != null)
{
try
{
Pattern pNumbers = Pattern.compile("(?<=(=|>|<| ))[-]?\\d+");

Matcher mNumbers = pNumbers.matcher(condition);
condition = mNumbers.replaceAll("'$1'");

} catch (Exception e)
{
e.printStackTrace();
}
}

return condition;
}

所以我正在寻找正确的正则表达式或其他解决方案。谢谢!

编辑:错误“后视模式无效”显然仅出现在 Ruby 中(因为 rubular 适用于 Ruby,但仍然比其他更好^^)。我在http://www.regexe.com/上进行了测试但结果仍然错误(“22”和“00”匹配)

编辑2:VKS的回答:(?<=[^\w-:])[+-]?\d+(?=\s|$)有效,如果其他人需要,我会让这里!

最佳答案

(?<=[^\w-:])[+-]?\d+(?=\s|$)

您可以使用它来代替。请参阅演示。

https://regex101.com/r/hE4jH0/24

关于java - 正则表达式匹配除日期时间格式中包含的数字之外的所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34043284/

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