0

テキスト処理にpythonを使用しています。基本的には、2つのランドマーク間のコンテンツを抽出したいと考えています。具体的な内容は以下のようなものです。「意図的な脆弱性の検索」と「意図の要約の印刷」の間のテキストを取得する正規表現を設計するにはどうすればよいですか。ありがとう

    Find component vulnerabilities
    ******************************************************************************************
    !!!@methods_for_class[org.apache.cordova.BatteryListener$1*org/apache/cordova/BatteryListener/execute(Ljava/lang/String;Lorg/json/JSONArray;Lorg/apache/cordova/api/CallbackContext;)@70!] is nil
    !!!@methods_for_class[org.apache.cordova.CordovaWebView$1*org/apache/cordova/CordovaWebView/setup()@124!] is nil
    !!!@methods_for_class[org.apache.cordova.NetworkManager$1*org/apache/cordova/NetworkManager/initialize(Lorg/apache/cordova/api/CordovaInterface;Lorg/apache/cordova/CordovaWebView;)@57!] is nil
    !!!@methods_for_class[org.apache.cordova.Device$1*org/apache/cordova/Device/initTelephonyReceiver()@29!] is nil
    Protected Receiver: org.apache.cordova.BatteryListener$1*org/apache/cordova/BatteryListener/execute(Ljava/lang/String;Lorg/json/JSONArray;Lorg/apache/cordova/api/CallbackContext;)@70!, 0
    Protected Receiver: org.apache.cordova.CordovaWebView$1*org/apache/cordova/CordovaWebView/setup()@124!, 0
    Possible Malicious Broadcast Injection: org.apache.cordova.NetworkManager$1*org/apache/cordova/NetworkManager/initialize(Lorg/apache/cordova/api/CordovaInterface;Lorg/apache/cordova/CordovaWebView;)@57, 0
    Possible Malicious Broadcast Injection: org.apache.cordova.Device$1*org/apache/cordova/Device/initTelephonyReceiver()@29, 0

    Find intent vulnerabilities
    ******************************************************************************************
    Possible Activity Hijacking: org/apache/cordova/CordovaWebView/showWebPage(Ljava/lang/String;ZZLjava/util/HashMap;)@147, Source Line: 664, hasExtras=false, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/CordovaWebView/showWebPage(Ljava/lang/String;ZZLjava/util/HashMap;)@201, Source Line: 676, hasExtras=false, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/CordovaWebViewClient/shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)@83, Source Line: 131, hasExtras=false, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/CordovaWebViewClient/shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)@161, Source Line: 142, hasExtras=false, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/CordovaWebViewClient/shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)@239, Source Line: 153, hasExtras=false, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/CordovaWebViewClient/shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)@368, Source Line: 185, hasExtras=true, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/CordovaWebViewClient/shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)@544, Source Line: 209, hasExtras=false, hasRead=false, hasWrite=false
    Possible Service Hijacking: org/apache/cordova/api/LegacyContext/bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)@22, Source Line: 142, hasExtras=false, hasRead=false, hasWrite=false
    Possible Activity Hijacking: org/apache/cordova/api/LegacyContext/startActivity(Landroid/content/Intent;)@20, Source Line: 82, hasExtras=false, hasRead=false, hasWrite=false
    Possible Service Hijacking: org/apache/cordova/api/LegacyContext/startService(Landroid/content/Intent;)@20, Source Line: 136, hasExtras=false, hasRead=false, hasWrite=false

    Print intent summary
    ******************************************************************************************
    **************************
    org/apache/cordova/Capture/captureAudio()@8
    invoke-direct   {v0,v1},android/content/Intent/<init>   ; <init>(Ljava/lang/String;)V
    Explicit: false
    Destination Type: 
    Done: false
    **************************
4

2 に答える 2

2

正規表現を使用する必要がありますか? str.find または str.index を使用して各マーカーを検索し、スライスを使用してそれらの間にあるものを抽出する方がおそらく簡単です。

ただし、正規表現を使用すると:

re.search(r"(?s)Find intent vulnerabilities\n(.*?)Print intent summary\n", text).group(1)
于 2013-04-09T01:49:20.983 に答える
2

ここでは正規表現はやり過ぎかもしれません。インデックスとスライスを使用しないのはなぜですか?

>>> l = len('test123')
>>> s = '  test123 somestuff here test456   '
>>> s.index('test123')
2
>>> s.index('test456')
25
>>> s[2+l:25]
' somestuff here '
于 2013-04-09T01:51:33.150 に答える