我怎么写这个模式?

时间:2015-06-29 22:35:09

标签: java regex

我目前正在开发一个从一个巨大的文本文件中提取某些字母的类,我似乎无法为它找到一个合适的模式来追踪我想要的东西。 我正在使用的模式是:

Pattern p = Pattern.compile("'[A-Z ]'|'[.]'"); 

在搜索类似这样的内容时:('L','O','','B','我') ,我的Matcher返回'L''O''B'I'(我用它来存储StringBuilder中的每个匹配),但不返回空格,我需要它。

我为任何演示文稿缺陷道歉,但我仍然习惯于在这里提问。

编辑: 我想要的是获得填字游戏的答案。我有一个类从填字游戏中获取代码并将其保存在文本文件中。之后,我想运行此代码以获得答案,其组织方式如下:

L[0] = new Array('S','O','L','O','M','I','L','L','O','','B','I','B','L','I','O','','C','A','O');
L[1] = new Array('A','R','T','R','O','S','E','','D','I','N','A','M','I','T','E','','E','U','');
L[2] = new Array('R','C','P','','R','I','C','A','','','','','','','','','','','','');
L[3] = new Array('R','A','','','A','S','A','','A','N','O','R','M','L','','P','U','T','I','N');
L[4] = new Array('O','','','','T','','','','','','','','','','','','','','','');
L[5] = new Array('','','','','O','','','','','','','','','','','','','','','');

我需要空格以便将一个答案与另一个答案分开,目前我的课程返回的输出是

SOLOMILLOBIBLIOCAOARTROSEDINAMITEEURCPRICARAASAANORMLPUTINOTO`

删除所有额外的不需要的符号后。 我需要它返回的是:

SOLOMILLO BIBLIO CAO ARTROSE DINAMITE EU RCP RICA RA ASA ANORML PUTIN O T O

2 个答案:

答案 0 :(得分:1)

你可以

  • 将空''替换为' '(内置空格)`
  • '(包括空格)包围的所有字符添加到StringBuilder(您似乎已经有了这一步,'([A-Z ])'也应该没问题。
  • 将构建器转换为字符串
  • 修剪以在开始和结束时删除空格
  • 用一个空格替换两个或多个空格(replaceAll("\\s{2,}"," ")可能很有用)。

如果您还要为每行的结果添加空格,请考虑分别解析每一行,并在每个解析后的行之后添加空格。

<强> Demo

答案 1 :(得分:0)

似乎你对你想要寻找的东西感到有点困惑。一方面,您想要寻找A-Z或空间。另一方面,您希望查找任何字符。你的第二部分包括第一部分。您可以使用以下内容来获取您的目标:

Pattern p = Pattern.compile("'.*?'");