簡體   English   中英

正則表達式如何匹配所有數字對,即使嵌套也是如此?

[英]Regex how to match all number pairs, even when nested?

我需要通過正則表達式計算文本字符串中的所有數字對,即使嵌套也是如此。 我想讓它識別任何數字,然后再識別任何數字。

例如,輸入字符串是Hello1233。 因此,將識別出“ 12”,“ 23”和“ 33”,並且數字對的匹配為3。使用\\ d \\ d之類的東西對我來說並沒有獲得中間的數字對(“ 23”) 。 它只捕獲2個匹配項,而不是3個。

在另一個示例中,Hello155786將標識“ 15”和“ 55”以及“ 57”和“ 78”和“ 86”作為匹配項。 \\ d \\ d僅獲得3場比賽,而不是我正在尋找的5場比賽。

如何通過正則表達式來識別所有數字對,甚至是中間的數字對呢?

看一下以下內容。 我想你很親密。 這是一個Python示例,但是對於任何環境,想法都是相同的:

import re

re.findall(r'(?=(\d\d))', 'hello1233')
['12', '23', '33']

re.findall(r'(?=(\d\d))', 'hello155786')
['15', '55', '57', '78', '86']

您將需要前瞻性斷言來執行此任務,因此將正則表達式從(\\d\\d)更改為(?=(\\d\\d))

從文檔:

(?= ...)如果...下一個匹配,則匹配,但不使用任何字符串。 這稱為先行斷言。 例如,僅當以撒(?= Asimov)后跟“以撒”時,它才會與“以撒”匹配。

暫無
暫無

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

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