पैटर्न मिलान के लिए नियमित अभिव्यक्ति का उपयोग किया जाता है।
Excel में उपयोग करने के लिए इन चरणों का पालन करें:
चरण 1 : "Microsoft VBScript नियमित अभिव्यक्ति 5.5" में VBA संदर्भ जोड़ें
- "डेवलपर" टैब चुनें ( मेरे पास यह टैब नहीं है कि मैं क्या करूं? )
- "विज़ुअल बेसिक" आइकन को 'कोड' रिबन सेक्शन से चुनें
- "Microsoft Visual Basic for Applications" विंडो में शीर्ष मेनू से "टूल" चुनें।
- "संदर्भ" चुनें
- अपनी कार्यपुस्तिका में शामिल करने के लिए "Microsoft VBScript रेगुलर एक्सप्रेशंस 5.5" के बगल में स्थित बॉक्स को देखें।
- ओके पर क्लिक करें"
चरण 2 : अपने पैटर्न को परिभाषित करें
मूल परिभाषाएँ:
-
रेंज।
- उदाहरण के
a-z
लिए, ए से जेड तक के निचले अक्षरों से मेल खाता है
- उदा
0-5
0 से 5 तक किसी भी संख्या से मेल खाता है
[]
इन कोष्ठकों के अंदर की वस्तुओं में से एक का ठीक से मिलान करें।
- जैसे
[a]
अक्षर a से मेल खाता है
- उदा
[abc]
एक एकल अक्षर से मेल खाता है जो a, b या c हो सकता है
- उदाहरण
[a-z]
के वर्णमाला के किसी भी निचले मामले पत्र से मेल खाता है।
()
वापसी के उद्देश्यों के लिए समूह अलग-अलग मेल खाते हैं। नीचे दिए गए उदाहरण देखें।
{}
इससे पहले परिभाषित पैटर्न की दोहराया प्रतियों के लिए गुणक।
- उदाहरण
[a]{2}
दो लगातार निचले मामले पत्र से मेल खाता है:aa
- उदाहरण के लिए
[a]{1,3}
कम से कम एक और तीन छोटे अक्षर पत्र से मेल खाता है a
, aa
,aaa
+
इससे पहले परिभाषित पैटर्न के कम से कम एक या अधिक मिलान करें।
- उदाहरण के लिए
a+
मिलान कर देंगे लगातार एक के a
, aa
, aaa
, और इतने पर
?
इससे पहले परिभाषित शून्य या पैटर्न में से एक का मिलान करें।
- ईजी पैटर्न मौजूद नहीं हो सकता है या हो सकता है लेकिन केवल एक बार ही मिलान किया जा सकता है।
- उदाहरण के लिए
[a-z]?
खाली स्ट्रिंग या किसी एकल लोअर केस पत्र से मेल खाता है।
*
इससे पहले परिभाषित शून्य या अधिक पैटर्न का मिलान करें। - पैटर्न के लिए ईजी वाइल्डकार्ड जो मौजूद हो या न हो। - जैसे [a-z]*
खाली केस या लोअर केस लेटर्स के स्ट्रिंग से मेल खाता है।
.
न्यूलाइन को छोड़कर किसी भी वर्ण से मेल खाता है \n
- उदा
a.
एक दो वर्ण स्ट्रिंग के साथ शुरू होता है और कुछ को छोड़कर समाप्त होता है\n
|
या ऑपरेटर
- उदाहरण के लिए
a|b
या तो इसका मतलब है a
या b
मिलान किया जा सकता।
- जैसे
red|white|orange
कि रंगों में से एक से मेल खाता है।
^
संचालक नहीं
- उदा
[^0-9]
वर्ण में संख्या नहीं हो सकती
- उदाहरण के लिए
[^aA]
चरित्र कम मामला a
या ऊपरी मामला नहीं हो सकताA
\
विशेष चरित्र से बचता है जो इस प्रकार है (व्यवहार से ऊपर उठता है)
- उदाहरण के लिए
\.
, \\
, \(
, \?
, \$
,\^
एंकरिंग पैटर्न:
^
स्ट्रिंग की शुरुआत में मैच होना चाहिए
- उदाहरण के लिए
^a
पहले अक्षर का केस लेटर होना चाहिएa
- उदा।
^[0-9]
पहला वर्ण एक संख्या होना चाहिए।
$
स्ट्रिंग के अंत में मैच होना चाहिए
- उदाहरण के लिए
a$
अंतिम वर्ण कम केस लेटर होना चाहिएa
वरीयता तालिका:
Order Name Representation
1 Parentheses ( )
2 Multipliers ? + * {m,n} {m, n}?
3 Sequence & Anchors abc ^ $
4 Alternation |
पूर्वनिर्धारित चरित्र संकेतन:
abr same as meaning
\d [0-9] Any single digit
\D [^0-9] Any single character that's not a digit
\w [a-zA-Z0-9_] Any word character
\W [^a-zA-Z0-9_] Any non-word character
\s [ \r\t\n\f] Any space character
\S [^ \r\t\n\f] Any non-space character
\n [\n] New line
उदाहरण 1 : मैक्रो के रूप में चलाएँ
निम्नलिखित उदाहरण मैक्रो सेल में मान A1
को देखने के लिए देखता है कि क्या पहले 1 या 2 अक्षर अंक हैं। यदि ऐसा है, तो उन्हें हटा दिया जाता है और बाकी स्ट्रिंग प्रदर्शित की जाती है। यदि नहीं, तो एक बॉक्स आपको बताता है कि कोई मैच नहीं मिला है। सेल A1
वैल्यूज़ 12abc
लौटेंगी abc
, वैल्यू ऑफ़ 1abc
रिटर्न abc
, वैल्यू ऑफ़ abc123
द रिटर्न "नॉट मैचेड" क्योंकि अंक स्ट्रिंग की शुरुआत में नहीं थे।
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "^[0-9]{1,2}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1")
If strPattern <> "" Then
strInput = Myrange.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox (regEx.Replace(strInput, strReplace))
Else
MsgBox ("Not matched")
End If
End If
End Sub
उदाहरण 2 : इन-सेल फ़ंक्शन के रूप में चलाएँ
यह उदाहरण उदाहरण 1 के समान है, लेकिन इन-सेल फ़ंक्शन के रूप में चलाने के लिए सेटअप है। उपयोग करने के लिए, कोड को इसमें बदलें:
Function simpleCellRegex(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = "^[0-9]{1,3}"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = ""
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
simpleCellRegex = regEx.Replace(strInput, strReplace)
Else
simpleCellRegex = "Not matched"
End If
End If
End Function
सेल में अपने तार ("12abc") रखें A1
। इस सूत्र =simpleCellRegex(A1)
को सेल में दर्ज करें B1
और परिणाम "एबीसी" होगा।
उदाहरण 3 : रेंज के माध्यम से लूप
यह उदाहरण 1 उदाहरण के समान है, लेकिन कोशिकाओं की एक श्रृंखला के माध्यम से छोरों है।
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "^[0-9]{1,2}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A5")
For Each cell In Myrange
If strPattern <> "" Then
strInput = cell.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox (regEx.Replace(strInput, strReplace))
Else
MsgBox ("Not matched")
End If
End If
Next
End Sub
उदाहरण 4 : अलग-अलग पैटर्न को विभाजित करना
यह उदाहरण एक सीमा के माध्यम से लूप ( A1
, A2
और A3
) और एक स्ट्रिंग के लिए दिखता तीन एक भी अल्फा चरित्र के बाद अंक और फिर 4 अंकों की के साथ शुरू। आउटपुट अलग-अलग विभाजन का उपयोग करके आसन्न कोशिकाओं में मेल खाता है ()
। $1
पहले सेट के भीतर मिलान किए गए पहले पैटर्न का प्रतिनिधित्व करता है ()
।
Private Sub splitUpRegexPattern()
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A3")
For Each C In Myrange
strPattern = "(^[0-9]{3})([a-zA-Z])([0-9]{4})"
If strPattern <> "" Then
strInput = C.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
C.Offset(0, 1) = regEx.Replace(strInput, "$1")
C.Offset(0, 2) = regEx.Replace(strInput, "$2")
C.Offset(0, 3) = regEx.Replace(strInput, "$3")
Else
C.Offset(0, 1) = "(Not matched)"
End If
End If
Next
End Sub
परिणाम:
अतिरिक्त पैटर्न उदाहरण
String Regex Pattern Explanation
a1aaa [a-zA-Z][0-9][a-zA-Z]{3} Single alpha, single digit, three alpha characters
a1aaa [a-zA-Z]?[0-9][a-zA-Z]{3} May or may not have preceding alpha character
a1aaa [a-zA-Z][0-9][a-zA-Z]{0,3} Single alpha, single digit, 0 to 3 alpha characters
a1aaa [a-zA-Z][0-9][a-zA-Z]* Single alpha, single digit, followed by any number of alpha characters
</i8> \<\/[a-zA-Z][0-9]\> Exact non-word character except any single alpha followed by any single digit