java - 我的正则表达式在单词后出现空格,而不应该出现空格

标签 java regex

我有一个正则表达式应该捕获大写单词。因此,如果有一个或多个单词全部为大写,则正则表达式会找到它。但我还有另一个正则表达式,可以捕获一个单词全部大写的单词。由于某种原因,第一个 reg ex 捕获一个全大写的单词,末尾有一个尾随空格。这是我的代码。

    //This looks for All Cap Words inside parens-completed
    String ucParensRegEx = "\\([A-Z]+\\)";
    regexParser(we, ucParensRegEx);
    //This looks for All Upper case words with two or more letters.- completed
    String twoPlusUCRegEx = "[A-Z][A-Z]+";
    regexParser(we, twoPlusUCRegEx);

    String letNumRegEx = "[A-Z][A-Z0-9][A-Z]+";
    regexParser(we, letNumRegEx);

    //Looks for Uppercase words that start with a number-Completed
    String numLetRegEx = "[0-9][A-Z][A-Z]+";
    regexParser(we, numLetRegEx);

    String upperwhitespaceRegEx = "(\\b[A-Z'][A-Z]+\\b\\s*)+";
    regexParser(we, upperwhitespaceRegEx);

private void regexParser(WordExtractor we, String regex) {
    if (we.getParagraphText() != null) {
        String[] dataArray = we.getParagraphText();

        for (int i = 0; i < dataArray.length; i++) {
            String data = dataArray[i].toString();
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(data);
            while (m.find()) {
                if (!sequences.contains(data.substring(m.start(), m.end())) && !data.equals("US ") && !data.contains("ARABIC") && !data.contains("ALATEC") && !data.contains("HYPERLINK")) {
                    sequences.add(data.substring(m.start(), m.end()));
                    System.out.println(data.substring(m.start(), m.end()));
                    Acronym acc = new Acronym(data.substring(m.start(), m.end()), data, "", false);
                    newAcList.add(acc);
                }
            }
        }
    }
}

最佳答案

"\\b[A-Z'][A-Z]+(\s+[A-Z'][A-Z]+)*\\b"

内部单词边界是不必要的(因为 \s[A-Z] 定义上在空格和大写字母之间有一个单词边界)。因此,您需要做的就是匹配一个大写单词,然后可以选择匹配其后面的一堆其他大写单词。

关于java - 我的正则表达式在单词后出现空格,而不应该出现空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12484647/

相关文章:

java - 将字符串流转换为长整型流

java - 支持快速第k大元素查找的队列数据结构

Python:str.split字符串返回 'Columns must be same length as key',尽管expand=True并且字符串中的正则表达式没有多个匹配

javascript - 检查输入是否最多 25 个字符且有空格的正则表达式?

java - 将文档插入 MongoDB 中的另一个文档

java - 未知的 Spring 标签

java - EXI 获取 JAXB 解码器

javascript - 从字符串中删除日期

regex - Regex_Extract使用PIG

java - 删除空格的正则表达式