有沒有一種方法可以指定匹配字符串的正則表達式,但是匹配字符串中的某個位置?我的意思是我有線:如何確保正則表達式只匹配某個字符
"Somebodys_value is % value"
我想檢查我的正則表達式是否匹配這個句子,但只有在%符號後。
有沒有一種方法可以指定匹配字符串的正則表達式,但是匹配字符串中的某個位置?我的意思是我有線:如何確保正則表達式只匹配某個字符
"Somebodys_value is % value"
我想檢查我的正則表達式是否匹配這個句子,但只有在%符號後。
只使用正則表達式,您只需在模式中包含%。如果您的模式是value
,則可以將其更改爲%.*value
。
另一種方式,這更依賴於你的引擎,是提供一個偏移。您可以使用strpos
類似的函數來查找%,並說在此之後開始匹配。
另一種方法是%後,一切複製到一個新的緩衝/串,然後嘗試匹配。
任何更具體的細節取決於您使用的引擎。
編輯:
這聽起來像你不希望在你的比賽%。一些具體的實施方式來做到這一點是...
(?:%).*value
,其中%是在非捕獲組%\K.*value
其中\ķ之前它摒棄一切(有限支持)%(.*value)
在那裏你將只使用第一個子模式(通常稱爲$ 1)。從表面上看,好像你可以使用這個表達式(其中斜槓是簡單的分隔符):它看到的百分比後
/%.*value/
它看起來對你的價值。在C++中進行編碼只是略微偏快,但由於您沒有指出您使用的是哪種正則表達式包,因此很難知道要編寫哪些代碼。有很多可能的正則表達式包可以計劃使用。
這一切都取決於你使用的,當然,具體的正則表達式API,但我看到兩種不同的選擇:
char*
指向%
呼喚你的match()
功能版本1可能更高效,但前提是您已知道'%'的位置!
忽略%我不明白你的問題,如果你的正則表達式就是''%那麼它將匹配您的輸入。正則表達式不需要匹配所有的輸入。你想要達到什麼目的?找到那個%的索引? – fge 2012-01-04 14:21:10
@fge我想查找是否有%符合我的正則表達式,順便說一句,不是% – smallB 2012-01-04 14:28:06
事先知道字符串的位置,還是依賴於特定的字符/字符串? – hmjd 2012-01-04 14:31:21