正则表达式匹配具有特殊字符的单词

时间:2015-03-16 12:58:49

标签: java regex

我想查找包含不同信息的文件中的任何字词,例如日期和百分比以及一些字符串。

输入:

21-02-2015 wordA 22 wordB wordC

结果:

wordA wordB wordC

请帮助我,因为我是regex的新手。

2 个答案:

答案 0 :(得分:0)

这是可以检索任何字符串的正则表达式,包括特殊字符答案:

 (([a-zA-Z]+)(\W)?([a-zA-Z]+))
  • ([a-zA-Z]+) Aa-zZ
  • 中查找字符
  • (\W)寻找特殊字符
  • ([a-zA-Z]+)如果特殊字符位于中间,则会查找其余单词

答案 1 :(得分:-1)

Java的正则表达式实现支持character class intersection,这是一个教科书用例。

因此,

[\w&&[^\d]]将匹配单词字符,但不匹配数字。与Pattern.UNICODE_CHARACTER_CLASS一起,它应与“特殊字符”匹配。

因此这段代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class test {

  public static void main(String... args) {
    String  input   = "21-02-2015 wordA 22 wordB wordC Førtids";
    Matcher matcher = Pattern.compile("[\\w&&[^\\d]]+",
                                      Pattern.UNICODE_CHARACTER_CLASS)
                      .matcher(input);

    while (matcher.find() ) {
      System.out.println(matcher.group() );
    }
  }

}

产地:

wordA
wordB
wordC
Førtids