2016-07-22 142 views
-1

歡迎傢伙,我只是這個社區的新手!只選擇特定單詞的正則表達式

這裏的情況,我有一些字符串這樣的

thatisanappleaaa

thatisanappleaaa壞

thatisanappleaaa.bad

thatisanapplebadaaa

thatisanbadappleaaa

thatisanbadbadappleaaa

badthatisanappleaaa

,並試圖用崇高的文本3查找和替換功能,以實現以下(注意,只有第一行被替換)

thatisanorangeaaa

thatisanappleaaa bad

thatisanappleaaa.bad

thatisanapplebadaaa

thatisanbadappleaaa

thatisanbadbadappleaaa

badthatisanappleaaaa

是否有過濾器在 「thatisanappleaaa」, 「蘋果」 只有(這是一條線)一個正則表達式在字符串中任何位置(「蘋果」之間除外)中都不存在「壞」字符,因爲字符串「bad」不會改變它的出現時間?

+0

我不知道這可以用崇高的文本做...看來,崇高的文本不支持可變長度負lookbehinds,所以你不能做'(?<!壞。*)蘋果(?!。*壞)'。 – smarx

+0

我已經和@smarx得出同樣的結論。 – Tyler

+0

感謝各位幫忙,@ smarx的正則表達式在多個測試網站上做得很完美。猜猜我必須在其他文本編輯 –

回答

0

嘗試

(\ w +),蘋果(\ w +)*

將選擇圍繞蘋果

包裹,如果你想選擇蘋果使用

蘋果後的文本結尾的所有文本(\ w +)。*

+0

找到我的好蘋果感謝您的迴應!它選擇所有的行,但情況是隻選擇字符串「蘋果」沒有「壞」周圍 –

0

在閱讀您的描述後,我假設您只想在沒有任何事件的句子中替換單詞apple單詞bad的ces。

我已經使用了一個正則表達式,它使用了負向視圖,並使用圓括號來捕獲apple,然後可以用任何單詞替換它,在您的情況下爲orange

正則表達式:^(?!.*bad).*(apple)

DEMO

+0

感謝您的迴應!建議的正則表達式能夠選擇「第一行」,但我只需要選擇字符串「蘋果」。 –

+0

@ m.x9082如果您注意到我在「匹配信息」部分中提供的演示側面,則只有'apple'與圓括號匹配。根據您使用的語言,您可以用您選擇的任何單詞替換此匹配的括號。 –

+0

謝謝!現在我注意到你的正則表達式在web中工作,但是當我將它插入Sublime Text 3時,它從字符串的開頭選擇到「apple」(即「thatisanapple」)的末尾,並且當我用橙色替換它時,整行字符串變成「orangeaaa」。 –