मेरे पास एक्सेल 2016 (वीबीए) में नियमित अभिव्यक्ति का उपयोग करते हुए एक मैक्रो के अंदर एक फ़ंक्शन है जो पाठ से सभी नंबरों को हटा देना चाहिए ताकि मैं मूल रूप से केवल अक्षर वर्णों के साथ समाप्त हो जाऊं। पकड़ यह है कि ये संख्या केवल अंक नहीं हैं, लेकिन वे रोमन अंक भी हो सकते हैं (केवल चार के माध्यम से रोमन अंक शामिल हैं, जो कि I, II, III और IV है)। एक उदाहरण के रूप में, संभावित वस्तुओं की निम्न सूची लें:
Program Manager 3
Systems Engineer 3
Secretary III 12345
Consultant
IT Instructor 3
Computer Operations Manager 1
User Support Specialist 2
Engineering Tech II 12345
IT Instructor 2
Network Tech 3
मेरा फ़ंक्शन अंकों और रोमन अंकों को बदलने के लिए निम्नलिखित VBA नियमित अभिव्यक्ति कोड का उपयोग करता है (मैं इस बिंदु पर ट्रिमिंग या किसी भी चीज़ के बारे में चिंतित नहीं हूं):
Public Function RemoveNumbers(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "[0-9]|\s[i]+|\s[iv]$"
RemoveNumbers = .Replace(Txt, "")
End With
End Function
आम तौर पर, यह ठीक काम करता है, सिवाय इसके कि मैं एक समस्या में भाग जाऊं। मेरा RegEx गलत तरीके से वाक्यांश को बदल देता है आईटी प्रशिक्षक 2 और इसे में बदल देता है ITnstructor (अंतरिक्ष और फिर शब्द के कारण प्रशिक्षक , जो एक के साथ शुरू होता है मैं जो रोमन अंक एक के समान है)। मैंने ऑनलाइन उत्तर खोजने की कोशिश की है और वाक्यांश को बाहर करने के लिए RegEx पाने के लिए कई विविधताओं का परीक्षण किया है प्रशिक्षक खोज में, लेकिन मुझे यह काम करने के लिए नहीं मिल सकता है कुछ पैटर्न जिनका मैंने उपयोग करने की कोशिश की है, उनमें शामिल हैं:
.Pattern = "\b(!Instructor)\b|[0-9]|\s[i]+|\s[iv]$"
.Pattern = "\b(!Instructor)\b\w+|[0-9]|\s[i]+|\s[iv]$"
.Pattern = "(!Instructor\b)|[0-9]|\s[i]+|\s[iv]$"
...etc
और चूंकि मुझे रोमन अंक एक (एक) को निकालना है, इसलिए मैं निम्नलिखित को वर्कअराउंड के रूप में उपयोग नहीं कर सकता:
.Pattern = "[0-9]|\s[i]{2,}|\s[iv]$"
क्या एक्सेल 2016 VBA रेगुलर एक्सप्रेशंस का उपयोग करके किसी स्ट्रिंग (जैसे इंस्ट्रक्टर) को सर्च का हिस्सा बनने से बाहर रखा जा सकता है? यदि हां, तो क्या कोई मुझे VBA RegEx के दौरान वस्तुओं को बाहर करने के बारे में सही दिशा में बता सकता है?
धन्यवाद
[^(Instructor)]
शायद काम कर जाये