2012-01-04 69 views
0

有沒有一種方法可以指定匹配字符串的正則表達式,但是匹配字符串中的某個位置?我的意思是我有線:如何確保正則表達式只匹配某個字符

"Somebodys_value is % value" 

我想檢查我的正則表達式是否匹配這個句子,但只有在%符號後。

+0

忽略%我不明白你的問題,如果你的正則表達式就是''%那麼它將匹配您的輸入。正則表達式不需要匹配所有的輸入。你想要達到什麼目的?找到那個%的索引? – fge 2012-01-04 14:21:10

+0

@fge我想查找是否有%符合我的正則表達式,順便說一句,不是% – smallB 2012-01-04 14:28:06

+0

事先知道字符串的位置,還是依賴於特定的字符/字符串? – hmjd 2012-01-04 14:31:21

回答

1

只使用正則表達式,您只需在模式中包含%。如果您的模式是value,則可以將其更改爲%.*value


另一種方式,這更依賴於你的引擎,是提供一個偏移。您可以使用strpos類似的函數來查找%,並說在此之後開始匹配。


另一種方法是%後,一切複製到一個新的緩衝/串,然後嘗試匹配。


任何更具體的細節取決於您使用的引擎。

編輯:
這聽起來像你不希望在你的比賽%。一些具體的實施方式來做到這一點是...

  • (?:%).*value,其中%是在非捕獲組
  • %\K.*value其中\ķ之前它摒棄一切(有限支持)
  • %(.*value)在那裏你將只使用第一個子模式(通常稱爲$ 1)。
  • 或者你可以做任何操作起始於子1,和在亞0
1

從表面上看,好像你可以使用這個表達式(其中斜槓是簡單的分隔符):它看到的百分比後

/%.*value/ 

它看起來對你的價值。在C++中進行編碼只是略微偏快,但由於您沒有指出您使用的是哪種正則表達式包,因此很難知道要編寫哪些代碼。有很多可能的正則表達式包可以計劃使用。

0

這一切都取決於你使用的,當然,具體的正則表達式API,但我看到兩種不同的選擇:

  1. 推動你char*指向%呼喚你的match()功能
  2. 包括前正如@JonathanLeffler所說,正則表達式本身的'%'。

版本1可能更高效,但前提是您已知道'%'的位置!