如何獲得具有正則表達式的未知子串?我知道想要的字符串前後是什麼,但我不想在結果中使用已知的部分。將未知子串與正則表達式匹配
示例文本:
jhgjgjgvocher_SOMETHINGHERE.dbhjjkghjkg
vocher_SOMETHINGELSE.db
我在尋找 'SOMETHINGHERE',只有 'SOMETHINGELSE'。
vocher_
和.db
總是在相關部分之前和之後,但不應該在結果中。
的工作方案是:
cat test | egrep -o "vocher_.*\.db" | cut -d "_" -f2 | cut -d "." -f1
...但你知道它是醜陋的。
是否有可能正確地搜索正則表達式的未知部分(在這種情況下只有.*
部分),還是我需要使用類似sed的東西?有更好的解決方案嗎?
嘗試用'grep -oP「(?<= vocher _)。*?(?= \。db)替換'egrep -o」vocher _。* \。db「'」' –
@Wiktor:需要星號後面的問號。 – JosefScript
另請參見[在SO文檔上的前瞻和Lookbehind示例](https://stackoverflow.com/documentation/regex/639/lookahead-and-lookbehind#t=201702220503256206195) – Sundeep