1

如果连续的大写单词在文档“I AM ALL UPPERCASE”中,我返回的是四个单独的大写单词。我需要的是返回整个大写“I AM ALL UPPERCASE”。我该怎么做呢?

String ucParensRegEx = "\([A-Z]+\)";
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("ARABIC") && !data.equals("ALATEC") && !data.equals("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);
                accronymList.add(acc);
            }
        }
    }
}
4

3 回答 3

2

你在寻找这样的东西吗?

String data="Some SENTENCE WITHOUT MEANING AnD OTHER PART OF that SenTENCE.";
String regex = "(\\b[A-Z]+\\b\\s*)+";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(data);
while (m.find()) 
    System.out.println(m.group());

输出:

SENTENCE WITHOUT MEANING 
OTHER PART OF 
于 2012-09-11T00:12:56.543 回答
0

试试这个正则表达式:

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

请注意,您可能需要正则表达式字符类中的撇号,因为它可能出现在大写单词中,就像在ISN'T.

Java代码:

  String sourcestring = "Hello there I AM ALL UPPERCASE and NONE of me is LOWERCASE. True? ISN'T IT Not!";
  Pattern re = Pattern.compile("((?:\\b[A-Z']+\\b\\s*)+)");
  Matcher m = re.matcher(sourcestring);
  int mIdx = 0;
    while (m.find()){
      for( int groupIdx = 0; groupIdx < m.groupCount()+1; groupIdx++ ){
        System.out.println( "[" + mIdx + "][" + groupIdx + "] = " + m.group(groupIdx));
      }
      mIdx++;
    }

这匹配:

I AM ALL UPPERCASE 
NONE 
LOWERCASE
ISN'T IT 

你可以在RegexPowertoy玩这个


更新:

要匹配带有句点的首U.S.字母缩写词并避免使用单字母首字母缩写词P.,您可以将正则表达式修改为:

((?:[A-Z]\.){2,}|(?:\b[A-Z][A-Z']*\b[?!]?\s*)+)

在这里玩, 代码可以在这里检查

于 2012-09-11T01:16:35.440 回答
0

尝试"\\b([A-Z][A-Z ]+[A-Z])\\b"代替您的表达方式。

这应该匹配任何 AZ 序列或空格,只要它们在大写字母和两侧的单词边界之间 - 这应该有望覆盖大写单词的完整序列,除非您有一些关于允许的要求里面的数字。

于 2012-09-11T01:39:32.787 回答