[英]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.