regex रेगेक्स एक qoutes के बीच रिक्त स्थान खोजें और अंडरस्कोर के साथ प्रतिस्थापित करें



replace find (1)

मेरे पास एक डेटाबेस तालिका है जिसे मैंने निर्यात किया है। मुझे एक छवि के साथ छवि फ़ाइल नाम को बदलने की आवश्यकता है और ऐसा करने के लिए नोटपैड ++ और रीगेक्स का उपयोग करना होगा। मेरे पास है:

'data/green tea powder.jpg'
'data/prod_img/lumina herbal shampoo.JPG'
'data/ALL GREEN HERBS.jpeg'
'data/prod_img/PSORIASIS KIT (640x530) (2).jpg'

और उन्हें इस तरह दिखना चाहिए:

'data/green_tea_powder.jpg'
'data/prod_img/lumina_herbal_shampoo.JPG'
'data/ALL_GREEN_HERBS.jpeg'
'data/prod_img/PSORIASIS_KIT_(640x530)_(2).jpg'

मैं बस उद्धरण (मैं पूंजीकरण को बदलना नहीं चाहता) के बीच रिक्त स्थान बदलना चाहता हूं। अधिक विशिष्ट होने के लिए मैं 'डेटा / और' के बीच किसी भी और सभी रिक्त स्थान को बदलना चाहूंगा क्योंकि डीबी में उद्धरण चिह्नों के बीच अन्य स्थान हैं, उदाहरण के लिए:

'data/ REPLACE ANY SPACE HERE '

मुझे मिला:

\s(?!(?:[^']*'[^']*')*[^']*$)

लेकिन वहां अन्य जगहें हैं जहां उद्धरण के बीच रिक्त स्थान हैं, इसलिए मैं data/ खोजना चाहता / चाहती हूं और सिर्फ एक ही उद्धरण नहीं, लेकिन मैं यह नहीं समझ सकता कि कैसे मैंने कोशिश की थी, लेकिन मुझे यह करने के लिए पर्याप्त regex के साथ परिचित नहीं हूँ। ऐसा करते हैं

डेटाबेस से पूर्ण पंक्ति का एक उदाहरण है:

(712, 'GRTE-P', '', 'data/green tea powder.jpg', '2014-03-12 22:52:03'),

मैं समय के अंत में रिक्त स्थान और डेटा स्टैंप को प्रतिस्थापित नहीं करना चाहता, बस छवि फ़ाइल नाम।

आपकी सहायता के लिये पहले से ही धन्यवाद!


यह सुनिश्चित करने के लिए आपको एक \G आधारित पैटर्न का उपयोग करना होगा कि मैचों में जुड़ा हुआ है।

खोज: (?:\G(?!^)|'data/)[^' ]*\K[ ]
प्रतिस्थापित करें: _

पहला मैच प्रत्यावर्ती की दूसरी शाखा का उपयोग करता है, फिर अगले मैचों में जुड़ा हुआ है और पहले शाखा का उपयोग करें।





find