मामला बंद: आखिरकार मैं इसे सही तरीके से लोड कर रहा था, लेकिन मेरे कोड में अन्य, उप-इष्टतम व्यवहार ने मुझे यह सोचने पर मजबूर कर दिया कि मैं नहीं था।


मैं JSON से एक रेगेक्स स्ट्रिंग लोड कर रहा हूं:

"version_scheme": {
    "type": "tuple",
    "re": "data-file=\"kitty_portable-(.*?)\\.exe\""
}

हालांकि, re.findall(...) का उपयोग करते हुए, मुझे [] इस तरह के घास के ढेर पर वापस मिल जाता है (यह requests मॉड्यूल का उपयोग करके किए गए GET अनुरोध की एक text विशेषता होगी):

<a href="https://www.fosshub.com/KiTTY.html?dwl=kitty_portable-0.74.4.10.exe"
                        data-file="kitty_portable-0.74.4.10.exe"
                        aria-label="Download kitty_portable-0.74.4.10.exe Windows portable"
0
Fabian Schneider 18 अप्रैल 2021, 07:23

2 जवाब

सबसे बढ़िया उत्तर

दोहरे उद्धरण चिह्न " को दोहरा होना चाहिए- (\\") या ट्रिपल-एस्केप (\\\")।

शाब्दिक बिंदु . को चौगुना-एस्केप (\\\\.) करने की आवश्यकता है।

पीछे की ओर काम करना

कच्ची स्ट्रिंग जो आप चाहते हैं:

r'data-file="kitty_portable-(.*?)\.exe"'

आप जो स्ट्रिंग चाहते हैं:

'data-file="kitty_portable-(.*?)\\.exe"'

वह स्ट्रिंग जिसे आप JSON के रूप में संग्रहीत करना चाहते हैं:

'data-file=\\"kitty_portable-(.*?)\\\\.exe\\"'
  • प्रत्येक दोहरे उद्धरण चिह्न " को या तो डबल बैकस्लैश या ट्रिपल बैकस्लैश से बचने की आवश्यकता है।
  • शाब्दिक बिंदु से पहले के दो बैकस्लैश में से प्रत्येक को एक बैकस्लैश से बचने की आवश्यकता है।
0
elyas 18 अप्रैल 2021, 07:45

आपका रेगेक्स निश्चित रूप से पायथन में काम करना चाहिए:

inp = 'something data-file="kitty_portable-0.74.4.10.exe" something'
matches = re.findall(r'data-file="kitty_portable-(.*?)\.exe"', inp)
print(matches)  # ['0.74.4.10']
0
Tim Biegeleisen 18 अप्रैल 2021, 04:46