簡體   English   中英

在字符串中間匹配錨定正則表達式的快速方法

[英]Fast way to match anchored regex in the middle of the string

考慮這樣的代碼:

Match match = new Regex("^bar").Match(some_string,3);

我想匹配some_string但不是從開頭開始,而是從給定位置開始。 抓住的是,我想從那個位置准確地進行比賽,因此是錨點。

不幸的是,它不起作用。 MS regex不能單獨使用字符串的大塊作為字符串,因此^僅匹配字符串的一個真實開頭而不是起始位置

一個簡單的解決方法是這樣編寫:

Match match = new Regex("^bar").Match(some_string.Substring(3));

縮小尺寸- 速度 (即缺乏速度 )。

所以我的問題是這樣的-在字符串中間如何搭配錨定的正則表達式,

.NET為引擎啟動位置(通常是最后一場比賽的結束,在您的情況下為偏移量)的位置有一個單獨的錨點: \\G

因此,您應該能夠使用模式@"\\Gbar"

來源(MSDN)

如果要限制匹配項以使其從字符串中的特定字符位置開始並且正則表達式引擎不掃描字符串的其余部分以尋找匹配項,請使用\\G固定正則表達式(在左側保留\\G從左到右的模式,或從右到右的模式)。 這限制了比賽,因此比賽必須從startat開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM