我写了一个基本的正则表达式来匹配任何具体的事件ID' 4727 | 4731 | 4759 | 4744 | 4749
我遇到的问题是它匹配的是非标准事件中超过4个字符的模式。
事件ID = 21的 4749 8949
编写正则表达式的最佳方法是什么,以便它只匹配5个特定事件而忽略其他任何事件?
答案 0 :(得分:4)
有一些方法可以解决这个问题。
如果EventID =经常出现,就像这样:
你总能找到这样的东西:
EventID=(4727|4731|4759|4744|4749)$
$
字符串的结尾但是,除此之外,你可以选择这样的东西:
\b(4727|4731|4759|4744|4749)\b
\b
是一个单词边界可以说在您要查找的4位数字符串之前和之后应该有一个单词边界。
答案 1 :(得分:0)
添加@ TaoStyle的回答
=(4727|4731|4759|4744|4749)$
只有在添加多行标记时才会起作用:
/=(4727|4731|4759|4744|4749)$/m
建议:如果您希望以后有4位数字的更多ID,为什么不使用/=\d{4}/m
?
答案 2 :(得分:0)
您正在寻找单词边界(\b
)。看看:
Pattern pattern = Pattern.compile("\\b(4727|4731|4759|4744|4749)\\b");
for (String in : new String[]{"EventID=2147498949", "EventID=4727"}) {
System.out.println(pattern.matcher(in).find());
}
此外,如果您的模式始终从EventID=
开始,则最好将其包含在模式中并使用group capturing