2017-06-15 91 views
0

我想構造一個匹配兩個組的正則表達式,第二個組包含一個單個字符,其重複次數與第一個組中的字符數相同。像^(\w+) (x{length of \1})這樣的,例如hello xxxxxfoo xxx會匹配,但是hello xxxxyfoo xxy不會。這可能嗎?正則表達式匹配兩個不同的長度相同的組

此處的目標是匹配reStructuredText樣式列表中的縮進,其中列表項中的第二行應縮進以匹配第一行中的文本的開頭,排除可變長度的數字列表標記。例如,

1. If the number is small, 
    subsequent lines are typically 
    indented three spaces. 
2. Although if the first line has 
    multiple leading spaces then 
    subsequent lines should reflect that. 
11. And when the number starts to get 
    bigger the indent will necessarily 
    be bigger too. 
+1

的長度有一個在所有的土地的正則表達式可以算沒有結構。有些屬性可以蒐集,如奇數或偶數。唯一的例外是Perl代碼構造'(?{code})',它可以很容易地做到這一點。 – sln

+0

據我所知,你無法完全基於長度匹配不同的羣體。如果這些組的內容是相同的,那麼這將起作用的唯一方法。然後你可以使用反向引用。 –

+0

嗯,那太糟糕了。謝謝(你的)信息。 – clwainwright

回答

0

你可以,如果

  1. 您正則表達式引擎支持有條件的圖案和
  2. 你願意接受一個固定的上界重複次數做到這一點。

在這種情況下,你可以做這樣的事情:

^(\w)?(\w)?(\w)?(\w)?(\w)? (?(1)x)(?(2)x)(?(3)x)(?(4)x)(?(5)x) 

這個例子將匹配高達5

+0

OP是否確實指定了重複字符只是'x'? – Olian04

+0

絕對凌亂,但它的作品。謝謝。 – clwainwright

相關問題