我正在使用表达式[A-F] {4}来尝试检查名为“words”的unix上的字典文件。问题是,现在它检查所有字符以找到A-F的四个字母组合(这意味着我可以获得与表达式匹配的单词的一部分),我需要它才能找到与此匹配的单词。我会在表达式后检查空格,但问题是每个单词都在一个新行上,并且后面不包含空格。
那么有没有办法可以检查他们是否在我使用正则表达式组合后的换行符就像你可以使用空格一样?
我正在编写我的代码,如果没有新的行可能性并且任何人都知道一个聪明的技巧。
将\ b添加到表达式的代码:http://pastebin.com/kYqr6Ex6
答案 0 :(得分:0)
您可以使用以下正则表达式(使用边框):\b[A-F]{4}\b
示例:
Pattern pattern = Pattern.compile("\\b[A-F]{4}\\b");
Matcher matcher = pattern.matcher("ABCD BCDE GHT GHJL\n" +
"XSE EFAB BHUI ABCE\n");
// check all occurance
while (matcher.find()) {
System.out.println(matcher.group());
}
<强>输出:强>
ABCD
BCDE
EFAB
ABCE
链接到提琴手:
http://rubular.com/r/lvpbG4nAYG
答案 1 :(得分:0)
答案 2 :(得分:0)
对于* nix命令行工具,单词边界正则表达式为\<
和\>
,用于单词的开头/结尾,请尝试使用此正则表达式:
[A-F]{4}\>
如果您正在寻找一个完整的单词,而不仅仅是单词的结尾,请添加单词start regex:
\<[A-F]{4}\>
答案 3 :(得分:0)
尝试在模式上使用标记Pattern.MULTILINE
并使用正则表达式\b[A-F]{4}\b$
Pattern pattern = Pattern.compile("[A-F]{4}$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
当Pattern.MULTILINE
处于活动状态时,$将与断行匹配。
使用RegexPlanet进行测试,我认为它会提供您想要的结果。