我試圖從字符串遵循此規則的末尾刪除字母「s」:正則表達式不是取代所需的字符串
必須有一個元音某處字,是不是在第二次最後的位置。在字符串中的倒數第二個位置可以有一個元音,但如果只有元音處於倒數第二個位置,則不會刪除「s」。
例如:
氣體 - >不會得到改變,因爲只有元音「a」是在位置上的「S」
玩具之前,右鍵 - >將成爲「玩具」
例子 - >例子,因爲在s之前的單詞中有一個元音(e,a),而不僅僅是倒數第二個位置。
現在我有叫Tokenizer.java
public String remove(String word){
//replace any words that end with s if the preceding word part contains a vowel not immediately before the 's'
word.replaceAll("(?i)([aeiou][a-z]*[a-rt-z])s\\b", "$1");
return word;
}
類類中的方法,我調用此方法在我tester.java類 包標記生成器;
public class Tester {
public static void main(String[] args) {
String word = token.deleteS("causes");
System.out.println(word);
word = token.remove("examples");
System.out.println(word);
word = token.deleteS("toys");
System.out.println(word);
word = token.deleteS("gas");
System.out.println(word);
}
}
我的輸出:
causes
examples
toys
gas
預期輸出:
cause
example
toy
gas
我遇到的問題是,當我測試了這個regex 101 link,我看到它的工作。爲什麼它在java中的行爲不同?
謝謝。對我來說非常愚蠢的監督。一直在這個太久。 – Anderology