0

我必须承认,在编写正则表达式时我非常无用,但我目前遇到了一个让我非常困惑的问题。

我编写了一个函数,它将字符串作为输入(大小为 22K)并对其执行单个正则表达式,以查找 Long 值。已找到一个 long 值,将其替换为来自 hashmap 的 String 值。

但是,它一直在字符串中缺少值,我写的正则表达式是:

Pattern.compile("[*]{3}[0-9]{1,}[*]{3}");

我在文件中搜索的长值的格式如下:

***nnnnnnnnnnnnnnnn***

现在正则表达式似乎可以工作,但就像我说的,它遗漏了一些值,例如:

***1407374883553285*** - FOUND
***281474976720057*** - NOT FOUND

我真的很困惑为什么它缺少值,我正在使用一个简单的 while 循环来进行搜索,以及matcher.find()它何时匹配。

我假设我的正则表达式不够严格,或者由于输入字符串中数据的结构方式而缺少值。

如果有人可以提供任何建议,我将不胜感激。

谢谢

4

2 回答 2

1

更干净的正则表达式是[*]{3}\d+[*]{3}. 对照以下检查它,看看它是如何进行的:

final Pattern pattern = Pattern.compile("[*]{3}\\d+[*]{3}");
final Matcher matcher = pattern.matcher("inputfile");
while (matcher.find())
{
  System.out.println(matcher.group());
}
于 2013-02-12T14:31:46.550 回答
-1

您可以将java.util.regex.Pattern.matches(String regEx, CharSequence input)正则表达式用作“ [*]{3}[0-9]*[*]{3}

于 2013-02-12T14:38:47.927 回答