2013-10-29 4 views
6

से पहले नहीं है, मैं पाइथन रेगेक्स का उपयोग करके कुछ बहुत बड़ी लॉग फ़ाइलों का विश्लेषण कर रहा हूं। मुझे 'जावा:' से पहले की संख्या को छोड़कर लॉग फ़ाइल में प्रत्येक नंबर को प्रतिस्थापित करने की आवश्यकता है (लॉग फाइल जावा प्रोग्राम द्वारा बनाई गई हैं)।मिलान संख्या स्ट्रिंग

इसका मतलब है कि यह देखते हुए कि हम एक लाइन कह है:

यह सीमा = 300 53 राउंड कर रही है के साथ एक फर्जी परीक्षण लाइन है और इसे गलती से (Abc.java:417) है और कुछ और

संख्या 300 और 53 प्रतिस्थापित किया जाना चाहिए, लेकिन नहीं 417

मैं एक पंक्ति के आधार पर फ़िल्टर कर, और यह ध्यान दिया जाना चाहिए कि नहीं सभी लाइनों java:[number] होते हैं।

निकटतम मैं मिल गया है है ((?<!java:)[0-9]+)

+2

आपने क्या प्रयास किया है? कुछ करने की कोशिश करना सीखने की प्रक्रिया है, आपको इसे करना चाहिए। – HamZa

+3

** नकारात्मक दिखने के दावों को देखें **। वे ठीक वही करने के लिए डिज़ाइन किए गए हैं जो आप बाद में कर रहे हैं। –

+1

क्षमा करें, मैंने किया था इससे पहले कि मैंने गलती से सवाल बचाया। अब यह अपडेट किया गया है। मैंने नकारात्मक दिखने की कोशिश की है, लेकिन इसे किसी भी संख्या में मेल नहीं करने में परेशानी है जब तक कि एक गैर-संख्या वर्ण न हो। – beruic

उत्तर

4

शायद क्या

((?<!java:)[0-9]+) 

साथ हो रहा है कि, यह सुनिश्चित करें, इस बिंदु पर मैच,

java: 
    ^

विफल रहता है, लेकिन फिर _this बिंदु पर,

java:4 
    ^

सफल होता है, क्योंकि वास्तव में, ava:4java: नहीं है।

आप बस एक और नकारात्मक lookbehind,

((?<!java:)(?<![0-9])[0-9]+) 
      ^^^^^^^^^^ 

ताकि केवल "पूर्ण" संख्या में माना जाता है जोड़ने की आवश्यकता होगी।

+0

ऐसा लगता है कि मैं वास्तव में क्या देख रहा था। मैंने इसे खराब करने की कोशिश करने के लिए ऋणात्मक रूप में '[0-9] * 'डालने की कोशिश की (मुझे पता था कि मैं क्या सोच रहा था, मेरा दिमाग इस पर फ्राइंग कर रहा है)। अब अपने समाधान का परीक्षण :) – beruic

+0

@beruic उपयोग [regex101.com] (http://regex101.com)! – HamZa

+0

@beruic - वास्तव में, आपकी रणनीति सहजता से सही थी। _that_ के साथ समस्या शायद यह है कि अधिकांश नियमित अभिव्यक्ति इंजन _variable-width asshtions_ के समान दिखने का समर्थन नहीं करते हैं, और '*' निश्चित रूप से इसे "चर चौड़ाई बनाता है।" –

संबंधित मुद्दे