如何在Java中正确使用带有数字字符串的Pattern

时间:2015-05-07 01:39:20

标签: java regex

我试图在Java中使用Pattern而我遇到了问题。

我想从包含数字(我从文件中检索到)的String[]中找到它们是否匹配另一串数字(也来自文件)。

E.g。我有一个数字1,我想在这样的字符串中搜索: 5 10 1 8 6 3 -1 10 8 10 10 4 10 -1 10 10 10 10 9 10 -1 10 10 10 10 10 10 -1 10 10 10 10 10 10 -1 -2

显然,-110并非我锁定的内容。有办法解决这个问题吗?

我无法使用带有整数的Pattern.compile()

1 个答案:

答案 0 :(得分:0)

有两种方法:

模式

文件中的数字用空格分隔,因此您可以像这样编写模式

String number = "1";
String file = "5 10 1 8 6 3 -1 10 8 10 10 4 10 -1 10 10 10 10 9 10 -1 10 10 10 10 10 10 -1 10 10 10 10 10 10 -1 -2";
file = " " + file + " "; // this is a hack to make the pattern to be right
boolean matches = Pattern.matches(".*\\s+" + number + "\\s+.*", file);
System.out.println(matches); // => true

如果从文件中删除“1”,则匹配将为false。由于这些空格,它将与文件中的“-1”和“10”不匹配。

ps:因为模式只匹配空格包围的数字,如果数字在文件的开头,并且数字前面没有空格,则它将不匹配。所以我做了黑客攻击。

将文件拆分为数组

您可以将文件(也使用seprator空间)拆分为数组,然后进行迭代和比较。