Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式匹配具有特殊字符的单词_Java_Regex - Fatal编程技术网

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

Java 正则表达式匹配具有特殊字符的单词,java,regex,Java,Regex,我想在包含不同信息的文件中查找任何单词,如日期、百分比和一些字符串 输入: 21-02-2015 wordA 22 wordB wordC 结果: wordA wordB wordC 请帮助我,因为我不熟悉正则表达式。这是可以检索任何字符串的正则表达式,包括找到它的特殊字符: (([a-zA-Z]+)(\W)?([a-zA-Z]+)) ([a-zA-Z]+)在aazz (\W)查找特殊字符 ([AZ-Z+])< /代码>如果特殊字符在中间,则查找单词的其余部分。 Java的正则表达式

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

输入:

21-02-2015 wordA 22 wordB wordC
结果:

wordA wordB wordC

请帮助我,因为我不熟悉正则表达式。

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

 (([a-zA-Z]+)(\W)?([a-zA-Z]+))
  • ([a-zA-Z]+)
    aazz
  • (\W)
    查找特殊字符
  • <代码>([AZ-Z+])< /代码>如果特殊字符在中间,则查找单词的其余部分。
Java的正则表达式实现支持,这是一个教科书式的用例

因此,
[\w&&[^\d]]
将匹配一个单词字符,而不是一个数字。与之一起应匹配“特殊字符”

因此,该代码:

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

你试过什么吗?如果你只是让我们给你一个解决方案,你将永远对这个问题保持陌生,这里的规则是什么?查找以
word
开头的单词?找到第二个、第四个和第五个单词?查找不包含数字的单词(看起来几乎与标题相反)?查找由五个字符组成的单词?也;您使用的是Java还是Apple的库?当然不是两者都有。比芬:实际上,它是在寻找构成单词的每个字符串(例如:Hello或Name等)。我在使用Java,我的问题是,我似乎无法用特殊的语言捕捉输入中的每个单词character@MedBEN那么您可能需要更改问题的标题。请把标签清理干净。不管怎样,
22
不是一个单词在什么方面?标题可以,但22是一个数字,我不想在结果中出现。如果一个单词中有多个“特殊”字符,这将不起作用。你为什么要使用这么多的捕获组?正如我说的,我对regex是新手,我愿意接受任何建议