2014-03-29 177 views
0

我想搜索并替换我的字符串中的某些模式。这是我的可能模式,python正则表达式替换双引号字符串中的单引号

  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"

回答

0

我建议解决这个使用组引用。

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"\.") 

,并在对正则表达式替换他们

相关问题