0
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)) {

}
4

3 回答 3

4

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

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

如果您确实坚持使用正则表达式,您可以通过删除 来简化它.*,以下将与您当前的正则表达式一样工作:

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

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

于 2012-06-07T23:14:14.260 回答
3

你不需要正则表达式:

temp = "77"
String searchPattern = ";" + temp + ";";
String inclusion = ";" + "100;0;77;200;....;90" + ";";
inclusion.indexOf(searchPattern);
于 2012-06-07T23:15:58.827 回答
1

没有正则表达式的另一种选择

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

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

于 2012-06-07T23:17:29.440 回答