第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在Regex中重疊匹配

在Regex中重疊匹配

紅糖糍粑 2019-08-28 14:36:47
在Regex中重疊匹配我似乎無法找到這個(gè)問題的答案,我想知道是否存在。簡化示例:考慮一個(gè)字符串“nnnn”,其中我想找到“nn”的所有匹配 - 但也是那些彼此重疊的匹配。因此正則表達(dá)式將提供以下3個(gè)匹配:nn nn? NN ?nn nn我意識到這并不是正則表達(dá)式的意思,但是對字符串進(jìn)行操作并手動解析它似乎是一個(gè)非常多的代碼,考慮到實(shí)際上匹配必須使用模式而不是文字字符串來完成。
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

一個(gè)可能的解決方案可能是使用積極的外觀

(?<=n)n

它會給你最終的位置:

  1. * N ***?** NN  

  2. N * N ***?** N  

  3. NN * N ***?**


正如Timothy Khouri所提到的 ,積極的前瞻更為直觀

我更喜歡他的命題(?=nn)n更簡單的形式:

(n)(?=(n))

這將引用您想要的字符串的第一個(gè)位置并將捕獲組(2)中的第二個(gè)n。

那是因?yàn)椋?/p>

  • 可以在前瞻中使用任何有效的正則表達(dá)式。

  • 如果它包含捕獲括號,則將保存反向引用

因此,組(1)和組(2)將捕獲'n'表示的任何內(nèi)容(即使它是復(fù)雜的正則表達(dá)式)。


查看完整回答
反對 回復(fù) 2019-08-28
?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用具有捕獲組的前瞻工作,代價(jià)是使正則表達(dá)式更慢,更復(fù)雜。另一種解決方案是告訴Regex.Match()方法,下一次匹配嘗試應(yīng)該從哪里開始。試試這個(gè):

Regex regexObj = new Regex("nn");Match matchObj = regexObj.Match(subjectString);while (matchObj.Success) {
    matchObj = regexObj.Match(subjectString, matchObj.Index + 1); }


查看完整回答
反對 回復(fù) 2019-08-28
?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

AFAIK,沒有純正的正則表達(dá)方式一次做到這一點(diǎn)(即返回你請求的三個(gè)捕獲沒有循環(huán))。

現(xiàn)在,您可以找到一次模式,并以offset(找到位置+ 1)開始循環(huán)搜索。應(yīng)該將正則表達(dá)式與簡單代碼結(jié)合使用。

[編輯]太棒了,當(dāng)我基本上說Jan所示的時(shí)候,我被投票了... 
[編輯2]要明確:Jan的答案更好。不是更精確,但肯定更詳細(xì),值得選擇。我只是不明白為什么我的被投票,因?yàn)槲胰匀粵]有看到任何錯(cuò)誤。沒什么大不了的,只是討厭。


查看完整回答
反對 回復(fù) 2019-08-28
  • 3 回答
  • 0 關(guān)注
  • 816 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號