Java 正则表达式要放在哪里?或如果在原始单词中检测到

Java 正则表达式要放在哪里?或如果在原始单词中检测到,java,regex,Java,Regex,我有一个词干分析器函数,如果检测到原始单词中有句点,它将返回词干单词并放置句点 代码如下: static String stemWord(Stemmer s, String word) throws Exception { return s.StemWordWithWordNet(word) + (word.charAt(word.length()-1) == '.'?"?":"" ); } 因此,当我将一个单词输入到stemWord函数中时,如果在原始单词中检测到1,它将在单

我有一个词干分析器函数,如果检测到原始单词中有句点,它将返回词干单词并放置句点

代码如下:

static String stemWord(Stemmer s, String word) throws Exception
{
    return s.StemWordWithWordNet(word)
    + (word.charAt(word.length()-1) == '.'?"?":"" );
}
因此,当我将一个单词输入到stemWord函数中时,如果在原始单词中检测到1,它将在单词的末尾放置一个点。范例

placing. -> place.  //notice it place a dot if it detects a dot in the original word
ate -> ate //no dot
现在,我如何修改正则表达式,以便它将?或如果它检测到一个

going? -> go?
reading! -> read!

您可以使用一个正则表达式,该正则表达式包含一组要在词干单词上复制的有效结尾标点:

private static final Pattern PUNCTUATION_PATTERN = Pattern.compile("[.?!]$");

static String stemWord(Stemmer s, String word) throws Exception {
    String word = "testing.";
    String stem = s.StemWordWithWordNet(word);

    Matcher m = PUNCTUATION_PATTERN.matcher(word);
    String endingPunctuation = m.find() ? m.group() : "";

    return stem + endingPunctuation;
}

您可以使用一个正则表达式,该正则表达式包含一组要在词干单词上复制的有效结尾标点:

private static final Pattern PUNCTUATION_PATTERN = Pattern.compile("[.?!]$");

static String stemWord(Stemmer s, String word) throws Exception {
    String word = "testing.";
    String stem = s.StemWordWithWordNet(word);

    Matcher m = PUNCTUATION_PATTERN.matcher(word);
    String endingPunctuation = m.find() ? m.group() : "";

    return stem + endingPunctuation;
}

您的代码示例似乎不是这样做的。。。你不能只写一个if或case语句吗?String.endsWith()函数可以用来使if条件更具可读性try
返回s.StemWordWithWordNet(word)+word.replaceFirst((?s^.*)([!?。]])$,“$1”)
。你的代码示例似乎不是这样做的。。。您不能只编写一个if或case语句吗?String.endsWith()函数可用于使if条件更具可读性尝试
返回s.StemWordWithWordNet(word)+word.replaceFirst((?s)^.*([!?。])$,“$1”)