2013-04-22 267 views
1

模式的第一次出現。如果我期待通過文字是這樣的:查找正則表達式

hello bob hello hello hello 

我想找到的打招呼的第一個實例,並把它拿出來,所以我用這樣的

模式
hello 

當我擦除模式,這是課文是什麼

bob 

,但我需要的是

bob hello hello hello 

如何修改它只能找到該模式的第一次出現

+1

您使用哪種語言?你有什麼嘗試? – 2013-04-22 17:07:59

+0

我想這是紅寶石!:) – Kent 2013-04-22 17:09:26

+0

@Kent相當狂野的猜測;) – 2013-04-22 17:11:09

回答

2

我的水晶碗告訴我你用你的正則表達式某種一global修改的,如果你離開它,那麼你應該得到你期望的結果。例如在JavaScript中,你可以使用:

/hello/ 

代替:

/hello/g 
+0

不,我不使用那個 – Kevin 2013-04-22 17:29:40

+1

@Kevin:全局(找到所有匹配)和非-global(僅查找第一個匹配項)不是正則表達式的一部分。這將是某種設置或標誌在通話中。我似乎無法找到有關超系統的正則表達式格式的任何文檔...您能指出我們的參考嗎? – mellamokb 2013-04-22 17:32:21

0

在OutSystems,通過擴展提供正則表達式的功能,所以我會假設你正在使用的Text擴展。擴展代碼映射到.NET/Java代碼,對正則表達式方法的底層調用爲Replace(string input, string replacement),.NET和replaceAll(String replacement)。這些都會替換給定輸入字符串上的所有正則表達式。

現在,多種方式爲您解決問題...

如果你想在字符串的開頭替換: 在你給的例子中,你好你有興趣在移除時也是在輸入字符串的開頭。在這種情況下,您可以使用正則表達式,如^hello

如果你想更換第一場比賽,在string中任何地方:如果你有興趣在替換第一次出現,但可以在輸入字符串的任何地方 ,那麼你可以寫這樣的表達式hello(.*)並用作替換字符串$1。在這種情況下,$1將表示捕獲組(.*),其將包括所有進一步的出現hello。這適用於.NETJava。當然,做事情的方式是既不漂亮,也沒有效率等等...

如果你想有更多的正則表達式功能:,您可以使用整合工作室下載和打開文本擴展和添加任何新的方法,您想要,雖然這個擴展包含在平臺中,並且可以通過升級來替代,但我建議創建自己的擴展並使用文本擴展名作爲模板。您可以創建一個非常類似於當前Replace的擴展操作,但可能需要額外的計數參數或類似的參數。