簡體   English   中英

Python正則表達式將雙引號替換為字符串中的單引號

[英]python regex substitute double quote to single quote in a string

我正在嘗試搜索並替換字符串中的某些模式。 這些是我可能的模式

  1. 在提供的字符串中,在模式-A'1.3.6.1.4.1.6536.2.7.0 s'之后,您可以看到一個帶有雙引號的字符串(可以包含所有可能的特殊字符,包括多個DOUBLE QUOTE)。 字符串的末尾在模式B“ 1.3.6.1.4.1.6536.2.13.0”之前用另一個雙引號引起來。
  2. 我想將模式A之后的雙引號替換為一個單引號,並將模式B之后的雙引號替換為另一個單引號。
  3. 問題是模式-B不是恆定值,或者它可能是行尾。 但是,在模式B之前將有一個雙引號。
  4. 另外,我希望字符串的其余部分保持原樣。

我的字串:

10.88.141.220 1.3.6.1.4.1.6536 66.187.220.156 6 1 0 1.3.6.1.4.1.6536.2.6.0 s "CIPS" 1.3.6.1.4.1.6536.2.3.0 s "202.39.169.59" 1.3.6.1.4.1.6536.2.21.0 i 48215 1.3.6.1.4.1.6536.2.7.0 s "eventId=1384760064820340493 vendor=Cisco eventType=evIdsAlert hostId=eips1 appName=sensorApp appInstanceId=14679 tmTime=1396009683700 severity=5 interfaceGroup=vs0 Interface=PortChannel0/0 Protocol=tcp riskRatingValue=85 sigId=5842 version=S269 sigDetails="Solaris Telnet Authentication Bypass" src=134.174.9.66 srcDir=OUT_2019 srcport=48215 dst=202.39.169.59 dstDir=OUT_2019 dstport=23 attackerContext="//4B//4B//4B//4B//sf//ofAFAAGf/w//sY//oYAHZ0MTAw//D/+yf/+icA AFVTRVIBLWZhZG3/8P/7H//6HwBQABn/8P/7GP/6GAB2dDEwMP/w//sn//on AABVU0VSAS1mYWRt//A=" physical="Unknown" idSource="unknown" targetValueRating="medium" cid:threatRatingValue="85" cid:triggerPacket="KJQPjJVyxArLBNAACABFAABWz9JAADoGbXyGrglCyiepO7xX ABcQv8jxU+LBD1AZwhDkIAAA//sf//ofAFAAGf/w//sY//oYAHZ0MTAw//D/ +yf/+icAAFVTRVIBLWZhZG3/8E1rFeUW3O7ORTfY7vCmsOVPZnRS/nAFpJ9V aSE+SOSDiLtNtFly/FARHU1cRFWHjko2ld6T3P1lTF0n9KimbwHpTldifaO+ 3FFeTjaehynxnAH7+Sfz1vX9ENfn" context="single_vf" relevance="unknown" type="unknown" backplane="PortChannel0/0" alertDetails="InterfaceAttributes: context=single_vf physical=Unknown backplane=PortChannel0/0 ; "" 1.3.6.1.4.1.6536.2.13.0 s "Fri Mar 28 07:28:03 CDT 2014" 1.3.6.1.4.1.6536.2.10.0 s "170015" 1.3.6.1.4.1.6536.2.14.0 i 23 1.3.6.1.4.1.6536.2.9.0 s "CPY000000334577~STE000000021185" 1.3.6.1.4.1.6536.2.2.0 s "134.174.9.66" 1.3.6.1.4.1.6536.2.20.0 s "" 1.3.6.1.4.1.6536.2.18.0 s "" 1.3.6.1.4.1.6536.2.4.0 i 5 1.3.6.1.4.1.6536.2.1.0 s "NFE-p1-10:1389503591806-9627475421" 1.3.6.1.4.1.6536.2.11.0 s "Code Injection" 1.3.6.1.4.1.6536.2.8.0 s "eips1" 1.3.6.1.4.1.6536.2.5.0 i 1 1.3.6.1.4.1.6536.2.12.0 i 60 1.3.6.1.4.1.6536.2.17.0 s "Partners Healthcare" 1.3.6.1.4.1.6536.2.19.0 s "no related events" 1.3.6.1.4.1.6536.2.16.0 s "Solaris Telnet Authentication Bypass" 1.3.6.1.4.1.6536.2.15.0 s "5842"'

需要的輸出:

10.88.141.220 1.3.6.1.4.1.6536 66.187.220.156 6 1 0 1.3.6.1.4.1.6536.2.6.0 s "CIPS" 1.3.6.1.4.1.6536.2.3.0 s "202.39.169.59" 1.3.6.1.4.1.6536.2.21.0 i 48215 1.3.6.1.4.1.6536.2.7.0 s 'eventId=1384760064820340493 vendor=Cisco eventType=evIdsAlert hostId=eips1 appName=sensorApp appInstanceId=14679 tmTime=1396009683700 severity=5 interfaceGroup=vs0 Interface=PortChannel0/0 Protocol=tcp riskRatingValue=85 sigId=5842 version=S269 sigDetails="Solaris Telnet Authentication Bypass" src=134.174.9.66 srcDir=OUT_2019 srcport=48215 dst=202.39.169.59 dstDir=OUT_2019 dstport=23 attackerContext="//4B//4B//4B//4B//sf//ofAFAAGf/w//sY//oYAHZ0MTAw//D/+yf/+icA AFVTRVIBLWZhZG3/8P/7H//6HwBQABn/8P/7GP/6GAB2dDEwMP/w//sn//on AABVU0VSAS1mYWRt//A=" physical="Unknown" idSource="unknown" targetValueRating="medium" cid:threatRatingValue="85" cid:triggerPacket="KJQPjJVyxArLBNAACABFAABWz9JAADoGbXyGrglCyiepO7xX ABcQv8jxU+LBD1AZwhDkIAAA//sf//ofAFAAGf/w//sY//oYAHZ0MTAw//D/ +yf/+icAAFVTRVIBLWZhZG3/8E1rFeUW3O7ORTfY7vCmsOVPZnRS/nAFpJ9V aSE+SOSDiLtNtFly/FARHU1cRFWHjko2ld6T3P1lTF0n9KimbwHpTldifaO+ 3FFeTjaehynxnAH7+Sfz1vX9ENfn" context="single_vf" relevance="unknown" type="unknown" backplane="PortChannel0/0" alertDetails="InterfaceAttributes: context=single_vf physical=Unknown backplane=PortChannel0/0 ; "' 1.3.6.1.4.1.6536.2.13.0 s "Fri Mar 28 07:28:03 CDT 2014" 1.3.6.1.4.1.6536.2.10.0 s "170015" 1.3.6.1.4.1.6536.2.14.0 i 23 1.3.6.1.4.1.6536.2.9.0 s "CPY000000334577~STE000000021185" 1.3.6.1.4.1.6536.2.2.0 s "134.174.9.66" 1.3.6.1.4.1.6536.2.20.0 s "" 1.3.6.1.4.1.6536.2.18.0 s "" 1.3.6.1.4.1.6536.2.4.0 i 5 1.3.6.1.4.1.6536.2.1.0 s "NFE-p1-10:1389503591806-9627475421" 1.3.6.1.4.1.6536.2.11.0 s "Code Injection" 1.3.6.1.4.1.6536.2.8.0 s "eips1" 1.3.6.1.4.1.6536.2.5.0 i 1 1.3.6.1.4.1.6536.2.12.0 i 60 1.3.6.1.4.1.6536.2.17.0 s "Partners Healthcare" 1.3.6.1.4.1.6536.2.19.0 s "no related events" 1.3.6.1.4.1.6536.2.16.0 s "Solaris Telnet Authentication Bypass" 1.3.6.1.4.1.6536.2.15.0 s "5842"

我建議使用組引用解決此問題。

re.sub(r'patternA"(.*?)"patternB', r"patternA'\1'patternB", myString)

在您的情況下:

patternA = r'1.3.6.1.4.1.6536.2.7.0 s '
patternA = patternA.replace(".", r"\.") # escaping special character
patternB = r'1.3.6.1.4.1.6536.2.7.0 s '
patternB = patternB.replace(".", r"\.")

並將它們代入正則表達式

暫無
暫無

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

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