मैं एक शीर्षक के दाईं ओर कॉमा द्वारा अलग किए गए दो-अक्षर भाषा कोडों की एक अनियंत्रित श्रृंखला को regexp-match (remove) कैसे करूं? [डुप्लिकेट]

Dec 01 2020

मेरे पास तार का एक गुच्छा है जैसे:

Super Mario Bros. 8 (En,Fr,De,Es,It)
Donald Duck in Whacky Land (En,Fr,De,Es,Sv)
Toadstool Adventures 3D (En)
Chinaland (En,De)
A title which doesn't have any such thing
...

यही है, कोष्ठकों में एक या अधिक भाषा कोड की सूची (कभी-कभी) के बाद किसी उत्पाद का शीर्षक।

मैं वास्तव में एक (PCRE) regexp के साथ आने के लिए संघर्ष करता हूं ताकि उन्हें सुरक्षित तरीके से तार से हटाया जा सके। अर्थात्, शीर्षकों को छूने की संभावना नहीं है।

मुझे पता है कि ([A-Z]{1}[a-z]{1})किसी एक भाषा कोड जैसे "इट" या "डे" से मेल खाने के लिए कहीं न कहीं शामिल होना चाहिए, लेकिन मुझे किसी भी तरह की संख्या की संभावना को कैसे संभालना चाहिए, कॉमा के बीच या बिना कॉमा के साथ (यदि यह सिर्फ है तो एक), मेरे नियमित अभिव्यक्ति कौशल से परे है।

मैं वास्तव में चाहता हूं कि उन्होंने शीर्षक भाग और फ़ाइल नाम के "मेटाडेटा" भाग के बीच किसी प्रकार के अस्पष्ट विभाजक का उपयोग किया था ... तो मुझे यह सब मैन्युअल परीक्षण और त्रुटि हटाने की आवश्यकता नहीं होगी। लेकिन उन्होंने ऐसा नहीं किया।

जवाब

MonkeyZeus Dec 01 2020 at 02:29

कुछ ऐसा होगा:

\([A-Z][a-z](?:,[A-Z][a-z])*\)$

https://regex101.com/r/xxNQ8h/1

wp78de Dec 01 2020 at 02:33

इसे इस तरह आज़माएँ:

\(([A-Z][a-z],?)+\).*$

ऑनलाइन डेमो