繁体   English   中英

正则表达式以匹配以特定正则表达式结尾的句子中的数字

[英]Regex to match numbers in sentence which ends with specific regex

我已经无法预知格式化一句:

Parameters: 123? ,345 abc#8678Alfa 666

我需要正则表达式匹配所有数字,除了以Alfa结尾的那些。 看起来很简单,但是...

这是我的尝试:

([0-9]+)(?!Alfa)

这是正则表达式的结果:

123 345 867 666

867是我不想要的结果。

你能给我一个提示吗?

以下正则表达式适用于您的情况

"(?![0-9]+Alfa)[0-9]+"

    String input = "Parameters: 123? ,345 abc#8678Alfa 666";

    String patternString = "(?![0-9]+Alfa)[0-9]+";

    Pattern pattern = Pattern.compile(patternString);

    Matcher matcher = pattern.matcher(input);

    while (matcher.find()) {
        System.out.println(matcher.group());
    }

// Output will be 123 345 666

?! 称为否定前瞻,将用于忽略指定模式之后的字符串。 更多信息在这里

希望这可以帮助。

所有格量词可以解决这个问题: ([0-9]++)(?!Alfa) (经过perl测试: m/([0-9]++)(?!Alfa)/g )。

为了提前取得否定的结果,您需要确定比赛结束的时间。

使用所有格的++而不是+会否定回溯,因此它会自动定位到比赛结束。 (效率最高,但通常不可用)

没有所有格,使用(?!Alfa|[0-9])将确保您的比赛不会以Alfa或数字中间结尾。 您还可以使用(?=[^0-9]|$)来检查您的匹配项是否不在数字中间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM