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

使用正则表达式从Java中的复杂字符串中提取单词,java,regex,string,extract,Java,Regex,String,Extract,我需要提取这个词: "Low" 从这个示例字符串: ['2', '0', '1', '4', '-', '0', '5', '-', '3', '1', ' ', '1', '6', ':', '5', '8', '\r', '\n', 'I', 'D', ':', '1', '1', '7', '\r', '\n', 'L', 'o', 'w', '\r', '\n', '\r', '\n', '\r', '\n'] 在Java中使用正则表达式。我想我必须利用字符串中\n和\r的五次重复,

我需要提取这个词:

"Low"
从这个示例字符串:

['2', '0', '1', '4', '-', '0', '5', '-', '3', '1', ' ', '1', '6', ':', '5', '8', '\r', '\n', 'I', 'D', ':', '1', '1', '7', '\r', '\n', 'L', 'o', 'w', '\r', '\n', '\r', '\n', '\r', '\n']
在Java中使用正则表达式。我想我必须利用字符串中
\n
\r
的五次重复,但这是我第一次使用正则表达式


匹配这三个字符的正确模式是什么?

匹配“Low”的正确正则表达式是
Low


您的模式
\\n(.*?\\r
匹配换行符后的所有内容,直到到达最后一个回车符(假设解析器设置为多行),这几乎肯定不是您想要做的

假设您正在使用字符串表示法

        String str = "['2', '0', '1', '4', '-', '0', '5', '-', '3', '1', ' ', '1', '6', ':', '5', '8', '\\r', '\\n', 'I', 'D', ':', '1', '1', '7', '\\r', '\\n', 'L', 'o', 'w', '\\r', '\\n', '\\r', '\\n', '\\r', '\\n']";
        Pattern p = Pattern.compile("((,\\s*)?'([A-Za-z])'((,\\s*)?'([A-Za-z])')+)((,\\s*)?'\\\\r)+");
        Matcher m = p.matcher(str);
        while(m.find())
        {
            String newString = m.group(1).replaceAll("[,' ]", "");
            System.out.println(newString);
        }

不知道你的绳子是什么样子,但是,这是你要找的吗

正则表达式:
^\w+$
或java中的
^\\w+$
。请记住使用右标志编译正则表达式:

Pattern p=Pattern.compile("^\\w+$",Pattern.MULTILINE);

如果您对regex模式和操作符不熟悉,我建议您仔细阅读以下的交互式教程。虽然它可能不是最终的指南,但它给了我一个非常好的起点。

这是一个字符串或字符数组?正则表达式处理字符串而不是字符数组。在您告诉我们您尝试了什么之后,查看更多要解析的数据以更恰当地构建正则表达式也会很有帮助。不,这是一个字符串,不是数组如果你只是想得到第三行的内容,那为什么还要用正则表达式呢?只需在
StringReader
周围使用
BufferedReader
并调用
readLine()
*直到到达第一个回车位,就更容易了