正则表达式模式,用于在分号分隔的数字列表中查找数字

时间:2012-06-07 23:09:05

标签: java regex

String temp = "77"; // It can be 0 or 100 or any value

// So the pattern will be like this only but number can be change anytime
String inclusion = "100;0;77;200;....;90";

我需要编写一个正则表达式,以便我可以看到temp是否存在于包含中,所以我写了一个像这样的regexPattern。

// This is the regular Expression I wrote.
String regexPattern = "(^|.*;)" + temp + "(;.*|$)"; 

那么你认为这个正则表达式每次都会起作用吗或者regexPattern有问题吗?

if(inclusion.matches(regexPattern)) {

}

3 个答案:

答案 0 :(得分:4)

如果temp可以包含正则表达式的特殊字符,则可能会遇到问题,但如果它总是整数,那么您的方法应该没问题。

但是,更直接的方法是将字符串拆分为分号,然后查看结果数组中是否有temp

<击> 如果您坚持使用正则表达式,可以通过删除.*来简化它,以下将与您当前的正则表达式相同:

"(^|;)" + temp + "(;|$)"

<击>

编辑哎呀,上面的内容实际上不起作用,我对Java中的正则表达式有些不熟悉,并没有意识到整个字符串需要匹配,感谢Affe!

答案 1 :(得分:3)

您不需要正则表达式:

temp = "77"
String searchPattern = ";" + temp + ";";
String inclusion = ";" + "100;0;77;200;....;90" + ";";
inclusion.indexOf(searchPattern);

答案 2 :(得分:1)

另一种没有正则表达式的替代方案

String inclusion2 = ";" + inclusion + ";";  // To ensure that all number are between semicolons
if (inclusion2.indexOf(";" + temp + ";") =! -1) {
   // found
}

当然,这里没有模式识别(通配符等)