اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

استعمال REGULAR EXPRESSION في اللغة العربية


الردود الموصى بها

من المعروف اصطلاحات  REGULAR EXPRESSION تستخدم للغة الانكليزية

لكن يمكن تطويعها للعمل باللغة العربية\

اليكم هذا المثال

Option Explicit
Sub Separate_Arabic_Word_Using_regex()
Dim obj As Object
Dim i%, m%, k%
Dim Matches
 m = 2: k = 4
Set obj = CreateObject("vbscript.regexp")
With obj
.Pattern = "[\u0621-\u064A]+"
.Global = True
End With
Range("A4").CurrentRegion.Offset(, 1).ClearContents
Do Until Range("a" & k) = vbNullString
Set Matches = obj.Execute(Range("a" & k))
If Matches.Count > 0 Then
 For i = 0 To Matches.Count - 1
  Cells(k, m) = Matches(i)
  m = m + 1
 Next
 End If
  m = 2
  k = k + 1
  Loop
End Sub
'[\u0621-\u064A]+ pattern (for arabic language)
'.Pattern = "\b\w+\b" pattern (for Eng language)

للايضاح الملف مرفق

 

SEPARETE_NAMES_BY_REGEX.xlsm

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

ممتاز بارك الله فيك استاذ سليم وجعله فى ميزان حسناتك

وزيادة فى اثراء الموضوع بعد اذن حضرتك طبعا استاذ سليم ,يمكن استخدام هذا الكود

Sub NameSplit()
    Dim var As Variant
    Dim rw As Long
    With Worksheets("Salim")
           For rw = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
                    If CBool(Len(.Cells(rw, "A").Value2)) Then
                           var = Split(.Cells(rw, "A").Value2, Chr(32))
                             .Cells(rw, "B").Resize(1, UBound(var) + 1) = var
            End If
        Next rw
    End With
End Sub

 

  • Like 3
رابط هذا التعليق
شارك

5 ساعات مضت, Ali Mohamed Ali said:

ممتاز بارك الله فيك استاذ سليم وجعله فى ميزان حسناتك

وزيادة فى اثراء الموضوع بعد اذن حضرتك طبعا استاذ سليم ,يمكن استخدام هذا الكود


Sub NameSplit()
    Dim var As Variant
    Dim rw As Long
    With Worksheets("Salim")
           For rw = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
                    If CBool(Len(.Cells(rw, "A").Value2)) Then
                           var = Split(.Cells(rw, "A").Value2, Chr(32))
                             .Cells(rw, "B").Resize(1, UBound(var) + 1) = var
            End If
        Next rw
    End With
End Sub

 

مشكور جداً اخي علي على هذا الكود

لكن الموضوع ليس تحديداً تقسيم الاسم (يوجد اشياء كثيرة بهذا الشأن)

بقدر ما هو قدرة تطويع  REGULAR EXPRESSION التي تستعمل كما هو معروف مصطلحات مثل (w+.\d  \   s  الخ..... ) لتعمل مع اللغة العربية

 

  • Like 1
رابط هذا التعليق
شارك

ماشاء الله مشكور

اخ سليم واخ على

فى انتظار فجوال بيزك باللغة العربية ان شاء الله

-----

حد عنده برنامج فلاش يدعم تشغيل الفيديو فى الفورم

1979968313_2.jpg.d3448eef918ed3a9281b0762ba2bfa7b.jpg

 

رابط هذا التعليق
شارك

اخ على

شكرا على الرابط لكن الرابط بيشرح الطريقة عن طريق الفيجوال بيسك دوت نت

الفيجوال بيسك دوت نت موجود عندى على اسطوانة وانا لغيت الاسطوانات ووضعت بدل منها هارد اضافى

حصرف الف شكر

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information