Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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/3/templates/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 正则表达式以提取ducuments中最长的名称_Java_Regex - Fatal编程技术网

Java 正则表达式以提取ducuments中最长的名称

Java 正则表达式以提取ducuments中最长的名称,java,regex,Java,Regex,我想从文件中提取姓名 例如:“詹姆斯·坎宁安”是一个名字 我想从以下文档中提取名称: 詹姆斯·坎宁安(生于1973年或1974年)是加拿大单口喜剧演员和电视主持人 有没有办法提取最长的名字?如果文档中只有“jam”或“cunningham”,那么只需提取一个单词。但如果“果酱”和“坎宁安”同时存在,就把它们都提取出来。假设名称在文档中不会被分隔 以下是我的java代码: String subArray[]=sub.split(" "); StringBuilder

我想从文件中提取姓名
例如:
“詹姆斯·坎宁安”是一个名字
我想从以下文档中提取名称:

詹姆斯·坎宁安(生于1973年或1974年)是加拿大单口喜剧演员和电视主持人

有没有办法提取最长的名字?如果文档中只有“jam”或“cunningham”,那么只需提取一个单词。但如果“果酱”和“坎宁安”同时存在,就把它们都提取出来。假设名称在文档中不会被分隔

以下是我的java代码:

        String subArray[]=sub.split(" ");
        StringBuilder patternbuilder=new StringBuilder();
        for (int i = 0; i < subArray.length; i++) {
            if(i==subArray.length-1){
                patternbuilder.append("("+subArray[i]+" )");
            }else{
                patternbuilder.append("("+subArray[i]+" )"+"|");
            }
        }
        String subpattern=patternbuilder.toString();
        Pattern pattern=Pattern.compile(subpattern);
        Matcher matcher = pattern.matcher(para);
        while (matcher.find()) {
            NamedEntity subEntity=new NamedEntity(jCas, matcher.start(), matcher.end());
            subEntity.setValue(matcher.group());
            entities.setSubject(subEntity);
        }
String子数组[]=sub.split(“”);
StringBuilder patternbuilder=新StringBuilder();
对于(int i=0;i

“sub”是输入名称字符串,my way只能在名称中找到一个单词。

您可以使用以下命令:

    for (int i = 0; i < subArray.length; i++) {
        if(i==subArray.length-1){
            patternbuilder.append("( ?"+subArray[i]+")?");
        }else{
            patternbuilder.append("( ?"+subArray[i]+")?");
      }
   }
for(int i=0;i
对于小写名称,我怀疑是否有一种有效的方法可以安全地提取所有名称。也许,您需要一个名字列表来核对,并使用一种正则表达式来匹配从已知名字到
(born
)的名字。这只是一个想法。