نمایش نتایج 1 تا 10 از 10

نام تاپیک: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

  1. #1
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    59
    پست
    1,081

    استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    با سلام خدمت همه دوستان !
    ان شاءالله بموازات آموزش استفاده از رجکس در متن های انگلیسی در تاپیک استفاده از Regular Expressions یا به اختصار RegEx برای جستجو و جایگذاری عبارت در متن در این تاپیک بطور اختصاصی به استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی می پردازیم.
    البته با اطلاعات اندکی که بنده دارم استفاده از رجکس برای متن های فارسی براحتی جستجو در متن های انگلیسی نیست ولی ان شاءالله با کمک هم تا جائی که امکان استفاده از این آبجکت در متن های فارسی باشه سعی می کنیم از مثال ها و نمونه های کاربردی استفاده کنیم .
    یا حق

  2. #2
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    59
    پست
    1,081

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    در متن زیر میخواهیم جستجو بشه که آیا حروف یا کلمات فارسی وجود داره یا نه

    RegExr was created by gskinner.com.

    Edit the Expression & Text to see matches. Roll over matches or the expression for details. PCRE & JavaScript flavors of رجکس are supported. Validate your expression with Tests mode.

    The side bar includes a Cheatsheet, full Reference, and کمک. You can also سave & Share with the Community and view patterns you create or favorite in My الگوها .

    Explore results with the ابزارها below. Replace & List output custom results. Details lists capture groups. Explain describes your expression in plain انگلیسی.

    برای این جستجو می توانیم عبارت پترن رو بصورت های زیر استفاده کنیم:

    [آ-ی]+

    یا در داخل براکت بجای حرف آ و ی میتوانیم از یونیکد اونها استفاده کنیم
    بصورت زیر:

    [\u0600-\u06FF]+

    یا بصورت زیر :

    [آابپتثجچحخدذرزژسشصضطظعغفق کگلمنوهی]+

    حروف داخل براکت باید بدون فاصله و بهم چسبیده باشه
    البته اگه اعداد فارسی هم به حروف فوق اضافه کنیم عبارت پترن بصورت زیر تغییر می کنه:

    [آابپتثجچحخدذرزژسشصضطظعغفق کگلمنوهی۰۱۲۳۴۵۶۷۸۹]+
    آخرین ویرایش به وسیله eb_1345 : دوشنبه 05 آذر 1403 در 16:47 عصر

  3. #3
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    59
    پست
    1,081

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    حالا بنظر شما برای اینکه تشخیص بدهیم که کل متن فارسیه یا نه از چه پترنی باید استفاده کنیم ؟

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,684

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    سلام و روز خوش

    پترن دومی دقیق نیست و نباید استفاده بشه!
    پترن اولی کمی بهتر از اونه ولی اون هم دقیق نیست.

    پترن هایی مثل سومی و چهارمی بهترن چون بطور دقیق مشخص میکنین منظور شما از فارسی چی هست.

    کلا وقتی با عبارتهای غیر انگلیسی لاتین (مثل آلمانی یا فرانسوی) کار میکنین، پترن هایی مثل [a-zA-Z] یا حتی w\ رو باید حواستون باشه.
    چون اینها کارآکترهای extended دارن که باید جداگانه به پترن اضافه کنین.

    این اشکال یا باگ نیست - تعریف w\ همینجور هست.

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,684

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    در تشخیص متن فارسی چیزهای دیگه هم هست که باید بهش دقت کرد:
    کشیدگی : کــــشـــــیــــــده
    سداها: بَرنامه جُستار نِگار خرّم
    تنوین: فعلاً مثلاً
    همزه: ۀ أ ء إ ؤ
    نیم فاصله: پری‌زاد ماه‌پیشونی
    و البته خود فاصله.

    همه اینها در سناریو کار مشخص میشه،
    برای هر کدوم اینها باید یک sub-pattern درست کرد،
    و با توجه به شرایط اون رو درون [] اضافه کنیم.

  6. #6
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    59
    پست
    1,081

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام و روز خوش

    پترن دومی دقیق نیست و نباید استفاده بشه!
    پترن اولی کمی بهتر از اونه ولی اون هم دقیق نیست.

    پترن هایی مثل سومی و چهارمی بهترن چون بطور دقیق مشخص میکنین منظور شما از فارسی چی هست.

    کلا وقتی با عبارتهای غیر انگلیسی لاتین (مثل آلمانی یا فرانسوی) کار میکنین، پترن هایی مثل [a-zA-Z] یا حتی w\ رو باید حواستون باشه.
    چون اینها کارآکترهای extended دارن که باید جداگانه به پترن اضافه کنین.

    این اشکال یا باگ نیست - تعریف w\ همینجور هست.
    سلام
    درود بر شما

  7. #7
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    59
    پست
    1,081

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    ........................................

  8. #8
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,684

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    [\u0600-\u06FF]

    اما چرا این پترن دقیق نیست و نباید استفاده کنیم،
    جدول زیر کاملا نشون دهنده است:
    0 1 2 3 4 5 6 7 8 9 A B C D E F
    U+060x ؀ ؁ ؂ ؃ ؄ ؅ ؆ ؇ ؈ ؉ ؊ ؋ ، ؍ ؎ ؏
    U+061x ؐ ؑ ؒ ؓ ؔ ؕ ؖ ؗ ؘ ؙ ؚ ؛  ALM  ؝ ؞ ؟
    U+062x ؠ ء آ أ ؤ إ ئ ا ب ة ت ث ج ح خ د
    U+063x ذ ر ز س ش ص ض ط ظ ع غ ػ ؼ ؽ ؾ ؿ
    U+064x ـ ف ق ك ل م ن ه و ى ي ً ٌ ٍ َ ُ
    U+065x ِ ّ ْ ٓ ٔ ٕ ٖ ٗ ٘ ٙ ٚ ٛ ٜ ٝ ٞ ٟ
    U+066x ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٪ ٫ ٬ ٭ ٮ ٯ
    U+067x ٰ ٱ ٲ ٳ ٴ ٵ ٶ ٷ ٸ ٹ ٺ ٻ ټ ٽ پ ٿ
    U+068x ڀ ځ ڂ ڃ ڄ څ چ ڇ ڈ ډ ڊ ڋ ڌ ڍ ڎ ڏ
    U+069x ڐ ڑ ڒ ړ ڔ ڕ ږ ڗ ژ ڙ ښ ڛ ڜ ڝ ڞ ڟ
    U+06Ax ڠ ڡ ڢ ڣ ڤ ڥ ڦ ڧ ڨ ک ڪ ګ ڬ ڭ ڮ گ
    U+06Bx ڰ ڱ ڲ ڳ ڴ ڵ ڶ ڷ ڸ ڹ ں ڻ ڼ ڽ ھ ڿ
    U+06Cx ۀ ہ ۂ ۃ ۄ ۅ ۆ ۇ ۈ ۉ ۊ ۋ ی ۍ ێ ۏ
    U+06Dx ې ۑ ے ۓ ۔ ە ۖ ۗ ۘ ۙ ۚ ۛ ۜ ۝ ۞ ۟
    U+06Ex ۠ ۡ ۢ ۣ ۤ ۥ ۦ ۧ ۨ ۩ ۪ ۫ ۬ ۭ ۮ ۯ
    U+06Fx ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۺ ۻ ۼ ۽ ۾ ۿ

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,684

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    در مورد ارقام فارسی:

    در stringها فارسی ارقام به همون صورت اصلی ذخیره میشن:
    0123456789

    فقط در نمایش تبدیل میشن (به تنظیمات سیستم و اکسس هم بستگی داره)
    بنابراین اگر در سناریوی ما ارقام هم مجاز باشه باید همون d\ یا [0-9] رو بگذاریم.

    گذاشتن شکل نمایش ارقام (کدهای 6F0 تا 06F9) در پترن نمیتونه ارقام رو شناسایی کنه،
    مگر این که ارقام با این کدها ثبت شده باشن،
    که از طریق کیبرد و تایپ در تکس باکس و ... این اتفاق نمیفته.

  10. #10
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    59
    پست
    1,081

    نقل قول: استفاده از رجکس ( RegEx ) برای جستجو در متن های فارسی

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    در تشخیص متن فارسی چیزهای دیگه هم هست که باید بهش دقت کرد:
    کشیدگی : کــــشـــــیــــــده
    سداها: بَرنامه جُستار نِگار خرّم
    تنوین: فعلاً مثلاً
    همزه: ۀ أ ء إ ؤ
    نیم فاصله: پری‌زاد ماه‌پیشونی
    و البته خود فاصله.

    همه اینها در سناریو کار مشخص میشه،
    برای هر کدوم اینها باید یک sub-pattern درست کرد،
    و با توجه به شرایط اون رو درون [] اضافه کنیم.
    فکر کنم یونیکد بیشتر موارد در درون [] در پترن زیر قرار داده باشم :
    جهت احتیاط یونیکد ارقام فارسی هم اضافه کرده ام

    [0-9\u06F0-\u06F9\u0660-\u0669\u0629\u0643\u0649-\u064B\u064D\u06D5\u060C\u061B\u061F\u0640\u066A\u 066B\u066C\u0621-\u0628\u062A-\u063A\u0641-\u0642\u0644-\u0648\u064E-\u0651\u0655\u067E\u0686\u0698\u06A9\u06AF\u06BE\u 06CC\u0020\u2000-\u200F\u2028-\u202F]+



    regx.Pattern = "[0-9\u06F0-\u06F9\u0660-\u0669\u0629\u0643\u0649-\u064B\u064D\u06D5\u060C\u061B\u061F\" & _
    "u0640\u066A\u066B\u066C\u0621-\u0628\u062A-\u063A\u0641-\u0642\u0644-\u0648\u064E-\u0651\" & _
    "u0655\u067E\u0686\u0698\u06A9\u06AF\u06BE\u06CC\u 0020\u2000-\u200F\u2028-\u202F]+"

    متوجه نشدم چرا در هنگام نمایش کدها بین یکی دوتا از یونیکدهای داخل [] فاصله ایجاد میشه
    آخرین ویرایش به وسیله eb_1345 : چهارشنبه 07 آذر 1403 در 11:53 صبح

تاپیک های مشابه

  1. پاسخ: 86
    آخرین پست: دوشنبه 05 آذر 1403, 13:19 عصر
  2. جستجو در متن با REgex
    نوشته شده توسط hana1369 در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: پنج شنبه 03 اسفند 1391, 03:35 صبح
  3. یک regex برای استخراج کلمات با طول مشخص از داخل متن
    نوشته شده توسط sara_aryanfar در بخش C#‎‎
    پاسخ: 7
    آخرین پست: چهارشنبه 28 تیر 1391, 19:35 عصر
  4. سوال: استخراج یک عبارت با استفاده از RegEx ها
    نوشته شده توسط dr_csharp در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 14 مهر 1387, 11:56 صبح
  5. جستجو فارسی بر مبنای Regex
    نوشته شده توسط ealireza در بخش SQL Server
    پاسخ: 2
    آخرین پست: دوشنبه 15 بهمن 1386, 12:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •