2016-01-18 64 views
1

我正在研究一個Java項目,我想用RegEx替換標點符號,特別是只有逗號和句號,它們與一個字母相鄰(除了o或O)。例如,在一個像Love. , o.o這樣的字符串中,我只想刪除愛字後面的句號(新字符串:Love , o.o)。 我試過[A-NP-Za-np-z][.,],但顯然這也刪除了單詞的最後一個字母(新字符串:Lov , o.o)。有任何想法嗎? enter image description hereRegEx刪除標點符號如果它與字母相鄰

+0

這是否給你你想要的functonality? https://regex101.com/r/bD5iX2/1 – IanGabes

+0

@IanGabes不,因爲它取代。並且即使它們與o相鄰。此外,它仍會刪除我認爲是標點符號前的最後一個字母。 – syfantid

+0

所以'o.o'不應該匹配正則表達式,因爲它後面跟着o?此外,我正在使用非捕獲組,因此它不匹配最後一個字母:) – IanGabes

回答

1

您可以使用向後斷言:如果前一個字符是那些內部[...]定義的一個

(?<=[A-NP-Za-np-z])[.,] 

(?<=[A-NP-Za-np-z])將斷言。

在Java:

txt = txt.replace("(?<=[A-NP-Za-np-z])[.,]", ""); 
+1

謝謝!我正在尋找這樣的東西! :)我會在3'接受答案。 – syfantid

+1

只需[regex101](https://regex101.com/r/gR2yM5/1)上的其他演示鏈接。該示例也使用內聯修飾符。 – Jan

-1

你試過txt = txt.replace('.', ',')

+0

我不想全部替換'。'與','。我甚至不想全部替換'。'。 – syfantid

+0

if(txt.contains(「a。」){txt = txt.replace'。',',')}如果您只想在它跟隨某個字符時替換它,它可能會工作。 – DalekCaan99