Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Text Segmentation - Fatal编程技术网

Java 从字符串中提取单词的正则表达式

Java 从字符串中提取单词的正则表达式,java,regex,text-segmentation,Java,Regex,Text Segmentation,我想从java字符串中提取所有单词 单词可以用任何欧洲语言书写,不包含空格,只包含字母符号 但它可以包含连字符。您可以使用(?)的变体,即任何非空白字符的最大序列 使用负环行符,以便它可以匹配字符串开头和结尾的“单词” 将自己的字符类替换为\S,以查找更具体的字符 (例如[A-Za-z-]等) 下面是一个简单的示例来说明这个想法,使用[a-z-]作为字母字符类: String text = "--xx128736f-afasdf2137asdf-12387-kjs-23xx--"

我想从java字符串中提取所有单词

单词可以用任何欧洲语言书写,不包含空格,只包含字母符号


但它可以包含连字符。

您可以使用
(?)的变体,即任何非空白字符的最大序列

  • 使用负环行符,以便它可以匹配字符串开头和结尾的“单词”
  • 将自己的字符类替换为
    \S
    ,以查找更具体的字符
    • (例如
      [A-Za-z-]
      等)
下面是一个简单的示例来说明这个想法,使用
[a-z-]
作为字母字符类:

    String text = "--xx128736f-afasdf2137asdf-12387-kjs-23xx--";
    Pattern p = Pattern.compile(
        "(?<!alpha)alpha+(?!alpha)".replace("alpha", "[a-z-]")
    );
    Matcher m = p.matcher(text);
    while (m.find()) {
        System.out.println(m.group());
    }
工具书类
  • ,

但是字母表应该是什么呢?
您可能需要使用Unicode字符类等(保持不变,立即研究主题)

这将匹配单个单词:

`([^\s]+)`

如果您不受正则表达式的限制,还可以看看,特别是方法:

单词边界分析用于搜索和替换功能,以及允许用户双击选择单词的文本编辑应用程序。单词选择可正确解释单词内部和后面的标点符号。不属于单词的字符(如符号或标点符号)具有道路两边都断了


o'clock
是一个词吗?
Modula-2
是一个词吗?
x'x'
是一个词吗?那是一个词吗?
zexcqwqxc trmnbynmtrby
呢?@polygene它们是。在最简单的情况下。不,决不是,[0-9]不能出现在任何词中。Modula-2不是一个词。嗯,我认为这个答案实际上是行不通的。
(?只是
alpha+
。我可能最终会删除它。反馈?它会在某个地方,因为它会打印一些东西。等待您的最终解决方案来查看它的工作情况。这取决于“word”的定义。此外,它将匹配空字符串。
\s+
更好,或者
(\s+)
如果您想捕获它。您的正则表达式肯定匹配一个或多个空白字符吗?
\s
匹配空白,
\s
匹配非空白字符。
`([^\s]+)`