我有以下資料(如果有人感興趣,可能是log4j回應者的子集)
ap://167.172.44.255:1389/LegitimateJavaCla
ap://167.172.44.255:1389/La
ap://167.99.32.139:1389/Basic/ReverseShell/167.99.32.139/99
ldap://x.x.x.x.61k2ev3252274o2ek77941q85t0r9444o.interact.sh/ok6ll9m
ldap://c6ps4rekeidcvgqlsmsgcg37qdoyyknz4.interact.sh/a
ldap://c6ps4rekeidcvgqlsmsgcg37x9ayymcak.interact.sh/a
ldap://c6ps4ipurnhssm2608l0cg37chyyykyhk.interact.sh/a
ldap://c6ps4ipurnhssm2608l0cg37pdyyykbug.interact.sh/a
91fd9fef8958.bingsearchlib.com:39356/
550f7e1deaed.bingsearchlib.com:39356/a
2174d47e8d04.bingsearchlib.com:39356/a
da6d408517b9.bingsearchlib.com:39356/a
5463610592ef.bingsearchlib.com:39356/a
我只想保留 FQDN(主機和域)或 IP - 所以我嘗試了(\S*)?(:\/\/)?(?<interesting>.*)(:)?\/(參見https://regex101.com/r/dusRR5/1)
這個想法是:
(\S*)?→ 匹配或不匹配某些字母 (ldap, ...)(:\/\/)?→ 匹配與否://(?<interesting>.*)→ 匹配任何東西并呼叫它interesting(:)?→ ...但是:如果有的話就停下來\/→ ... 否則停在/
預期的結果是
167.172.44.255
167.99.32.139
x.x.x.x.61k2ev3252274o2ek77941q85t0r9444o.interact.sh
c6ps4rekeidcvgqlsmsgcg37qdoyyknz4.interact.sh
c6ps4rekeidcvgqlsmsgcg37x9ayymcak.interact.sh
(...)
但它不起作用,我對正則運算式的知識非常有限也無濟于事。
uj5u.com熱心網友回復:
稍微修改了一下:
^((?:\S*:\/\/)?\S*?)[:\/]
捕獲組包含您感興趣的內容。關鍵是使用惰性方法 ( *?) 和起始線錨點 ( ^)。
演示
uj5u.com熱心網友回復:
您可以使用
^(?:[a-zA-Z0-9] :\/\/)?(?<interesting>[^:\/] )
請參閱正則運算式演示。詳情:
^- 字串的開始(?:[a-zA-Z0-9] :\/\/)?- 任意一個或多個字母/數字的可選出現,然后://(?<interesting>[^:\/] )- 組“有趣”:除:and之外的任何一個或多個字符/。
請記住,/如果您使用字串文字(如在 Python 或 C# 中,或在 JavaScript/Ruby/等中使用建構式符號)定義正則運算式,則不必轉義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/383638.html
標籤:正则表达式
上一篇:在文本串列中提取唯一值,其中每個專案具有恒定的公共前綴或后綴或兩者
下一篇:以優雅的方式轉換字串scala
