匹配数字模式

时间:2011-11-02 16:39:40

标签: java regex

我正在做一个需要数字模式匹配的项目。 例如,我想知道Value = 1331是否属于680+651 = 1331的一部分,即我想将1331680+651 = 1331或任何其他给定字符串匹配。 我是第一次在java中尝试模式匹配,但我无法成功。以下是我的代码段。

String REGEX1=s1;   //s1 is '1331' 
pattern = Pattern.compile(REGEX1);
matcher = pattern.matcher(line_out);   //line_out is for ex. 680+651 = 1331
System.out.println("lookingAt(): "+matcher.lookingAt());
System.out.println("matches(): "+matcher.matches());    

它一直都是假的。 请帮助我。

3 个答案:

答案 0 :(得分:3)

matches()要求模式完全匹配,而不是部分匹配。

您需要将模式更改为.*= 1331$或使用find()方法进行部分匹配。

答案 1 :(得分:2)

matches方法需要完美匹配。由于680+651=1331中的文字多于正则表达式1331匹配的文字,因此匹配项会返回false

正如我在Brian的帖子中指出的那样,你需要小心你的正则表达式,以确保1331的正则表达式与213312的正则表达式不匹配,除非这是你想要的。

答案 2 :(得分:2)

matches()是错误的方法,请使用find()

http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html说:

  

public boolean matches()

     

尝试将整个输入序列与模式匹配。

  

public boolean find()

     

尝试查找与模式匹配的输入序列的下一个子序列。