প্যাটার্ন ম্যাচিংয়ের জন্য নিয়মিত প্রকাশগুলি ব্যবহৃত হয়।
এক্সেল ব্যবহার করতে এই পদক্ষেপগুলি অনুসরণ করুন:
পদক্ষেপ 1 : "মাইক্রোসফ্ট ভিবিএস স্ক্রিপ্ট নিয়মিত এক্সপ্রেশন 5.5" তে ভিবিএ রেফারেন্স যুক্ত করুন
- "বিকাশকারী" ট্যাবটি নির্বাচন করুন ( আমি কী করব এই ট্যাবটি আমার কাছে নেই? )
- 'কোড' ফিতা বিভাগ থেকে "ভিজ্যুয়াল বেসিক" আইকনটি নির্বাচন করুন
- "অ্যাপ্লিকেশনগুলির জন্য মাইক্রোসফ্ট ভিজ্যুয়াল বেসিক" উইন্ডোতে উপরের মেনু থেকে "সরঞ্জাম" নির্বাচন করুন।
- "তথ্যসূত্র" নির্বাচন করুন
- আপনার ওয়ার্কবুকের অন্তর্ভুক্ত করতে "মাইক্রোসফ্ট ভিবিএস স্ক্রিপ্ট নিয়মিত এক্সপ্রেশন 5.5" এর পাশের বক্সটি চেক করুন।
- "ওকে" ক্লিক করুন
পদক্ষেপ 2 : আপনার নিদর্শন সংজ্ঞায়িত করুন
প্রাথমিক সংজ্ঞা:
-
পরিসীমা।
- উদাহরণস্বরূপ
a-z
একটি থেকে জেতে একটি ছোট ছোট অক্ষরের সাথে মেলে
- যেমন
0-5
0 থেকে 5 পর্যন্ত যে কোনও সংখ্যার সাথে মেলে
[]
এই বন্ধনীগুলির অভ্যন্তরের অবজেক্টগুলির মধ্যে একটির সাথে ঠিক মিল করুন।
- উদাহরণস্বরূপ
[a]
অক্ষরের সাথে মেলে a
- উদাহরণস্বরূপ
[abc]
একটি একক বর্ণের সাথে মেলে যা একটি, বি বা সি হতে পারে
- উদাহরণস্বরূপ
[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
"মিলবে না" ফিরে আসবে কারণ স্ট্রিংয়ের শুরুতে অঙ্কগুলি ছিল না at
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
এবং ফলাফল "ABC" হতে হবে।
উদাহরণ 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