我必须事先道歉,因为这很可能是我的一个非常愚蠢的概念错误,但是我坚持使用正则表达式来匹配输入/输出文件中的一行,该行将显示为:

随机数123.4:{OR}随机数1234.5

我要在该行中执行以下操作:

while ((c_line = c_reader.readLine()) != null) {
System.out.println("Entering RegExp loop\n");
String regline1 = "\.\\d{3}\.\\d\\:";
   if (c_line.endsWith (regline1)) {
       /* read value and next few lines into buffer */
   }
}

如果我没有记错我的正则表达式应该匹配[Any character](这是为了确保我同时捕获了3位和4位值(在逗号之前)-> [3位],立即数[。]和再次是[digit]。但是我无法做到这一点。

如果任何人都可以告诉我我在哪里犯(概念上的)错误,将不胜感激。

亲切的问候,Bas Jansen

===============>>#1 票数:3 已采纳

String类的endsWith方法在另一个字符串的末尾查找字符串,而不是模式

===============>>#2 票数:1

尝试这个:

Pattern pattern = Pattern.compile(".*\\d{3,4}\\.\\d:$");
Matcher matcher = pattern.matcher(c_line);
if (matcher.matches()){
   ...
}

注意正则表达式末尾的$ ,以指定匹配必须发生在输入字符串的末尾。

===============>>#3 票数:0

为了将来参考,您可以使用此处列出的任何RegEx帮助器来帮助您缩小表达式问题。

  ask by Bas Jansen translate from so

未解决问题?本站智能推荐: