Regular-Expression

正則表達式:匹配 n 個字元一次,在 n 個字元之後

  • October 8, 2020

我正在尋找一個在任何字元出現 56 次後匹配任何字元 11 次的正則表達式。

例子:

this is a long formatted line with any char. 56    timesmatchI wantNothingShouldMatchHere
  • 我想要的是:
matchI want
  • 我嘗試了什麼:
(?<=.{56}).{11}

但這匹配matchI wantAND NothingShouAND ldMatchHere

  • 這個:
(?<=.{56}).{11}?

產生相同的結果。

謝謝你的幫助 !


注意:在我的情況下,此正則表達式旨在與repython 模組一起使用

這應該有效;強制 56 個字元位於^行首:

(?<=^.{56}).{11}

展示

sed -E 's/.{56}(.{11}).*/\1/'

Sed 的想法是匹配整行並且只擷取所需的 11 個字元。它們被擷取在內部(),整條線被該組替換。有關更詳細的說明,請參閱使用 \1 保留部分模式。

如果要忽略不包含至少 56+11=67 個字元的行,請使用

sed -nE 's/.{56}(.{11}).*/\1/p' file

引用自:https://unix.stackexchange.com/questions/613512