Regular Expressions

  • تحقيق التقدم المستمر: استخراج نسبة التقدم من إخراج أمر FFmpeg في جولانج

    عندما يتعلق الأمر بتنفيذ أوامر الشل واسترجاع الإخراج بشكل فوري في لغة البرمجة جولانج، يمكن تحقيق ذلك باستخدام مكتبة os/exec واستخدام قارئ لقراءة إخراج الأمر. في الكود الذي قدمته، يتم استخدام الدالة print لطباعة الإخراج الناتج من الأمر.

    لتحقيق الهدف الذي تريده، يمكنك تعديل الكود بحيث يتم قراءة الإخراج الناتج من الأمر بشكل دوري ويتم استخراج النسبة المكتملة من الإخراج. فيما يلي نسخة معدلة من الكود:

    go
    package main import ( "bufio" "fmt" "io" "os/exec" "strings" "regexp" "strconv" ) func main() { cmdName := "ffmpeg -i t.webm -acodec aac -vcodec libx264 cmd1.mp4" cmdArgs := strings.Fields(cmdName) cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...) stdout, _ := cmd.StdoutPipe() cmd.Start() go printProgress(stdout) cmd.Wait() } // to print the processed information when stdout gets a new line func printProgress(stdout io.ReadCloser) { r := bufio.NewReader(stdout) progressRegex := regexp.MustCompile(`frame=\s+\d+\s+fps=\d+\.\d+\s+q=\d+\.\d+\s+size=\s+\d+kB\stime=\S+\s+bitrate=\s+\d+\.\d+kbits/`) for { line, _, err := r.ReadLine() if err != nil || io.EOF == err { break } // Check if the line matches the expected format if progressRegex.Match(line) { // Extract the percentage from the line percentage := extractPercentage(string(line)) fmt.Printf("%s%%\n", percentage) } } } // Extract percentage from the line using a regular expression func extractPercentage(line string) string { percentageRegex := regexp.MustCompile(`(\d+)%`) match := percentageRegex.FindStringSubmatch(line) if len(match) == 2 { return match[1] } return "0" }

    تم إضافة دالة printProgress التي تقوم بفحص الإخراج الناتج من الأمر باستمرار واستخراج النسبة المكتملة. يتم استخدام تعبيرات منتظمة للتحقق من تنسيق الإخراج واستخراج النسبة المكتملة. يتم طباعة النسبة المكتملة في حالة العثور على تطابق.

    المزيد من المعلومات

    بالطبع، دعنا نوسع قليلاً على الحل الذي تم تقديمه. في الشيفرة المعدلة، تمت إضافة تعبير منتظم جديد يسمى progressRegex، وهو يستخدم للتحقق من تنسيق الإخراج الناتج عن أمر FFmpeg. يتم استخدام هذا التعبير لاستخراج البيانات الرئيسية من السطر الذي يحتوي على معلومات التقدم.

    التعبير المنتظم progressRegex يتوقع سلسلة نصية تحتوي على معلومات محددة حول التقدم والتي تظهر عدة مرات أثناء تنفيذ الأمر. تم تصميمه ليطابق السطور التي تحتوي على النمط التالي:

    css
    frame= 101 fps=0.0 q=28.0 size= 91kB time=00:00:04.13 bitrate= 181.2kbits/

    بعد ذلك، يتم استخدام دالة extractPercentage لاستخراج النسبة المكتملة من السطر باستخدام تعبير منتظم جديد يُسمى percentageRegex. هذا التعبير يستخرج النسبة المئوية من السطر باستخدام النمط (\d+)%. في حالة العثور على تطابق، يتم إرجاع النسبة المكتملة كنص.

    هكذا، تم تحقيق هدفك الذي يتمثل في طباعة النسبة المكتملة بشكل مستمر أثناء تنفيذ أمر FFmpeg باستخدام لغة البرمجة جولانج. يمكنك استخدام هذا الكود كنقطة انطلاق لتطوير المزيد من الوظائف أو التكامل في تطبيقك بشكل أوسع.

  • استخدام list.files() في R للبحث عن ملفات تبدأ بنص محدد

    في لغة البرمجة R، يُستخدم الأمر list.files() لقراءة ملفات النظام. ولكن، تواجهك مشكلة عندما تستخدم pattern لأنه يقوم بفحص جميع الملفات التي تحتوي على النص المحدد، وليس فقط تلك التي تبدأ به.

    لحل هذه المشكلة واسترجاع فقط الملفات التي تبدأ بنص محدد، يمكنك استخدام تعبيرات الاستجابة العادية (Regular Expressions) في pattern. في هذه الحالة، يمكنك استخدام “^” للدلالة على بداية السلسلة.

    لذا، يمكنك تعديل الأمر كما يلي:

    R
    MASTERLIST = list.files("/Volumes/3TB/", pattern="^CL")

    باستخدام “^CL”، ستحصل الآن على قائمة تحتوي فقط على الملفات التي تبدأ بـ “CL” وليس تلك التي تحتوي على “CL” في أي مكان آخر من اسم الملف.

    هذا التحديث يساعدك في الحصول على النتائج المرجوة وتفادي الحصول على ملفات تحتوي على النص المحدد في أي مكان.

    المزيد من المعلومات

    تحتاج إلى فهم أكثر عن استخدام الأمر list.files() في R وكيف يمكن أن يكون له تأثير على عمليات البحث في الملفات. يعتبر هذا الأمر أحد الأدوات الأساسية في R للتحقق من محتوى الدلائل والمجلدات. يقوم الأمر بإرجاع قائمة بأسماء الملفات والمجلدات داخل مسار معين.

    عند استخدام الخاصية pattern، يمكن للمستخدم تحديد سلسلة نصية يريد البحث عنها في أسماء الملفات. وهنا تأتي التعبيرات العادية إلى اللعب دوراً حيوياً. في المثال الخاص بك، استخدمت “^CL” للتأكيد على أن تلك الملفات يجب أن تبدأ بـ “CL”.

    هذا يفتح الباب لمزيد من التعمق في التعبيرات العادية، حيث يمكنك تحديد قواعد دقيقة للبحث عن الملفات. يمكنك استخدام “*” لتحديد أي عدد من الحروف بين الحروف المحددة، أو استخدام “$” للإشارة إلى نهاية السلسلة، وهكذا.

    على سبيل المثال، إذا كنت ترغب في البحث عن ملفات تنتهي بـ “16”، يمكنك استخدام:

    R
    MASTERLIST = list.files("/Volumes/3TB/", pattern="16$")

    وهذا يعين على أن تكون السلسلة “16” في نهاية أسماء الملفات.

    إذا كنت بحاجة إلى المزيد من التحكم، يمكنك البحث عن دلائل أكثر تخصصًا أو تنفيذ عمليات تحويل على نتائج الأمر لتناسب احتياجاتك الخاصة. يساعد ذلك في تحسين فعالية استخدام R لمعالجة الملفات بشكل فعال ودقيق.

  • استخدام TWebBrowser في Delphi لفتح وعرض ملف PDF من متصفح الويب

    عند النظر إلى تحقيق هذا الهدف في تطبيق Delphi الخاص بك، يتعين عليك النظر في استخدام بعض التقنيات والمكونات المختلفة المتاحة في بيئة Delphi. لكن قبل ذلك، دعونا نتحدث قليلاً عن التحدي الذي تواجهه وكيف يمكن تجاوزه.

    أولاً وقبل كل شيء، يجب عليك معرفة أنه بشكل افتراضي، لا يمكن لتطبيق Delphi التفاعل مباشرة مع متصفح الويب للحصول على معلومات حول الصفحة الحالية أو مصدر الصفحة. ولكن يمكنك تجاوز هذا باستخدام مكونات خارجية.

    استخدام مكونات من طرف ثالث يعد خيارًا جيدًا للوصول إلى متصفح الويب من تطبيق Delphi الخاص بك. يمكنك استخدام مكتبات مثل “TWebBrowser” المتاحة في Delphi أو مكتبات مثل “Chromium Embedded Framework (CEF)” لإدراج متصفح داخل تطبيقك.

    بمجرد أن يقوم المستخدم بفتح ملف PDF من متصفح الويب داخل تطبيق Delphi الخاص بك، يمكنك استخدام حدث مثل “OnDocumentComplete” للقبض على عنوان URL الحالي. يمكنك ثم استخدام هذا العنوان كمتغير للحصول على معلومات حول الملف الذي تريد فتحه.

    على سبيل المثال، يمكنك استخدام كود Delphi مشابه للتالي:

    delphi
    procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin // عند اكتمال تحميل الصفحة، يمكنك الحصول على عنوان الصفحة var currentURL: string := URL; // قم بتحليل عنوان الصفحة للحصول على المعلومات التي تحتاجها // على سبيل المثال، اسحب مسار الملف PDF من العنوان var filePath: string := ExtractFilePath(currentURL); // استخدم filePath كمتغير لفتح ملف PDF في تطبيق Delphi الخاص بك end;

    يرجى مراجعة مستندات Delphi والمكتبات المستخدمة للحصول على مزيد من التفاصيل والتحديثات حيث قد تتغير الأمور بمرور الوقت.

    المزيد من المعلومات

    في سعيك لتحقيق هذا الهدف، يجب أن تتخذ الخطوات التالية:

    1. استخدام TWebBrowser:
      يمكنك استخدام مكون “TWebBrowser” المدمج في Delphi لعرض متصفح الويب داخل تطبيقك. يمكنك تعيين حدث “OnDocumentComplete” لمعرفة عنوان الصفحة بعد تحميلها.

    2. تحليل عنوان URL:
      عند حدوث حدث “OnDocumentComplete”، يمكنك تحليل عنوان URL للحصول على المعلومات التي تحتاجها. يمكنك استخدام مكتبة “Regular Expressions” لاستخراج البيانات بشكل فعال.

    3. تحديد موقع الملف PDF:
      افترض أن عنوان URL يحتوي على معلومات حول مكان تخزين الملف PDF. يمكنك استخدام قواعد تحليل العنوان لتحديد موقع الملف.

      على سبيل المثال:

      arduino
      https://example.com/documents/file.pdf

      يمكن تحليل الرابط للحصول على موقع الملف النهائي الذي سيتم استخدامه في تطبيق Delphi الخاص بك.

    4. فتح ملف PDF في تطبيق Delphi:
      بعد تحديد موقع الملف، يمكنك استخدام مكتبة Delphi لفتح الملف PDF. يمكنك استخدام مكتبة “AcroPDF” أو “PDFium” أو غيرها لتحقيق هذا.

    5. التعامل مع التصدير:
      قد تحتاج أحيانًا إلى التعامل مع عمليات التصدير والعرض داخل تطبيق Delphi. استخدم واجهات برمجة التطبيقات (APIs) المتاحة لديك للتحكم في تلك العمليات.

    يجدر بك أن تتذكر أنه يجب متابعة التوثيق الخاص بـ Delphi والمكتبات التي تستخدمها، حيث قد تكون هناك تحديثات وتغييرات. استخدام مكونات خارجية يمكن أن يكون له أيضًا تأثير على أداء التطبيق، لذا يجب مراعاة هذه النقاط أثناء التطوير.

  • إزالة الإيموجي في PHP: تقنيات فعّالة لتحسين معالجة النصوص

    عندما يتعلق الأمر بإزالة جميع الرموز التعبيرية (الإيموجي) من سلسلة نصية في لغة البرمجة PHP، يمكن اتباع عدة خطوات بسيطة لتحقيق هذا الهدف بكفاءة. يعد هذا الأمر مهمًا خاصةً إذا كنت ترغب في تحويل النص إلى صيغة نصية نقية بدون أي رموز غير مرغوب فيها.

    في البداية، يمكن استخدام تعبيرات النمط (Regular Expressions) في PHP للتحقق وإزالة الإيموجي. يمكن استخدام الكود التالي كنقطة انطلاق لتحقيق هذا الهدف:

    php
    function removeEmoji($text) { // تعبير منتظم للكشف عن الإيموجي $emojiPattern = '/[\x{1F600}-\x{1F64F}\x{1F300}-\x{1F5FF}\x{1F680}-\x{1F6FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}]/u'; // إزالة الإيموجي باستخدام تعبير منتظم $cleanText = preg_replace($emojiPattern, '', $text); return $cleanText; } // النص الأصلي $originalText = '

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 🇬🇧🍁🍃🍂🌰🍁🌿🌾🌼🌻

    '
    ; // إزالة الإيموجي من النص الأصلي $cleanedText = removeEmoji($originalText); // عرض النص بعد إزالة الإيموجي echo $cleanedText; ?>

    يقوم الكود بتحديد وإزالة جميع الإيموجي من النص الأصلي باستخدام تعبير منتظم يغطي مجموعة واسعة من الرموز الخاصة بالإيموجي. يمكنك تكييف الكود وتوسيع نطاق الإيموجي المراد إزالته وفقًا لاحتياجاتك الخاصة.

    فيما يخص النص العربي الذي أدرجته، فإن رغبتك في معرفة المزيد قد تكون محورًا لتطوير تطبيقات PHP المستقبلية أو توسيع إمكانيات معالجة النصوص في المشاريع الخاصة بك. يُظهر هذا السياق كيف يمكن أن تتلاقى الاحتياجات التقنية مع الغرض العام لتطبيقك.

    المزيد من المعلومات

    بالطبع، دعنا نوسع قليلاً على السياق البرمجي وكيف يمكن أن يكون هذا الموضوع ذو أهمية في تطوير تطبيقات PHP ومعالجة النصوص. إزالة الإيموجي ليست مجرد تحدي فني بسيط، بل تمثل جزءًا من العديد من التحديات التي تواجه مطوري البرمجيات عند التعامل مع النصوص المستخدمة على نطاق واسع.

    أولاً وقبل كل شيء، يتعين علينا فهم أهمية إزالة الإيموجي. في سياق تطوير الويب وتطبيقات الجوّال، يمكن أن تكون الرموز التعبيرية مفيدة لتحسين تجربة المستخدم وجعل النصوص أكثر حيوية وتعبيرًا. ومع ذلك، قد تكون هناك حالات حينما نرغب في تحويل النص إلى شكل نقي خالٍ من الرموز الغير ضرورية، سواء لأسباب تحليل البيانات أو لتحسين الأمان.

    التعبيرات النمطية (Regular Expressions) التي تم استخدامها في الكود تمثل أحد الأدوات الرئيسية في هذا السياق. يمكن للمطورين تعديل النمط وتوسيعه لتضمين أو استبعاد فئات معينة من الرموز حسب الحاجة.

    من الجوانب الأخرى التي يمكن النظر فيها، يمكن دمج هذه الوظيفة في نظام معالجة النصوص الخاص بك، سواء كان ذلك في محرر نصوص أو جزء من نظام إدارة المحتوى. يمكنك أيضاً استكشاف استخدام مكتبات خاصة بمعالجة النصوص في PHP مثل mbstring لتحقيق تأثيرات مماثلة.

    في النهاية، يعتمد الأمر على طبيعة تطبيقك ومتطلباته الخاصة. إن تعزيز فهمك لكيفية التعامل مع النصوص في PHP سيساعدك في تحسين أداء تطبيقاتك وتحقيق النتائج المرجوة.

  • تحسين استبدال العناصر في AngularJS باستخدام Regular Expressions

    في إطار منصة AngularJS، يتعامل المطورون أحيانًا مع تحويل النصوص واستبدال العناصر في سلاسل النصوص. في المثال الذي قدمته، يتم استخدام تقنية الاستبدال في JavaScript لاستبدال الظهور الأولى فقط للعناصر

    بالرمز “-“. لكن هناك طريقة أفضل لتحقيق هذا الهدف واستبدال جميع الظهور.

    يمكن استخدام تعبيرات النمط العادية (Regular Expressions) لتحقيق استبدال جميع الظهور بسهولة. في هذا السياق، يمكنك تحسين الكود ليكون كالتالي:

    javascript
    var descriptionVal = desc.replace(/
    /g, '-').replace(/<\/div>/g, '-');

    في هذا الكود، تم استخدام تعبيرات النمط العادية /g للإشارة إلى أن الاستبدال يجب أن يتم على كل الظهور، وليس الظهور الأول فقط. بتضمين “g”، يتم تطبيق الاستبدال على كل الظهور في النص.

    لفهم هذا بشكل أفضل، دعونا نستعرض الكود:

    javascript
    var descriptionVal = desc.replace(/
    /g, '-').replace(/<\/div>/g, '-');

    هذا الكود يقوم بالبحث عن كل

    و

    في النص ويقوم بتبديلها بالرمز “-“. الـ /g في نهاية التعبير يضمن تطبيق الاستبدال على كل الظهور.

    المزيد من المعلومات

    في إطار استخدام AngularJS، يعتبر الاستبدال وتحويل النصوص أمرًا شائعًا في التطبيقات الويب. تقدم AngularJS ميزات قوية لتحقيق هذا الهدف، وتساعد في تسهيل التفاعل مع العناصر الواجهة وتعديلها بناءً على الاحتياجات.

    تتيح لنا الأساليب التقليدية للسلاسل في JavaScript، مثل replace()، إمكانية البحث عن نماذج معينة واستبدالها بقيم أخرى. في حالتك، تم استخدام هذه الطريقة لاستبدال أول ظهور لكل

    بالرمز “-“.

    مع ذلك، يجدر بك مراعاة الاعتماد على تقنيات AngularJS بشكل أكثر شمولية لتلافي مشكلات محتملة. يمكن استخدام التوجيهات (Directives) في AngularJS للتحكم في سلوك العناصر والنصوص في الواجهة. على سبيل المثال، يمكنك استخدام التوجيه ng-bind-html لعرض النصوص بشكل آمن دون تشغيل الكود الضار.

    هناك أمثلة أخرى للاستفادة من إمكانيات AngularJS بشكل أفضل في التلاعب بالعناصر والنصوص، وذلك عبر استخدام القوالب والتحكم في النماذج والمزيد. يُشدد دائمًا على أهمية فهم السياق الشامل لتحقيق أفضل أداء وصيانة لتطبيقات AngularJS.

  • استخدام التعابير العادية في Replace بلغة JavaScript

    في حال كنت تعاني من تحديد نمط معين في سلسلة النصوص باستخدام التعابير العادية، يمكنك استخدام التعبير العادي التالي لتحقيق ذلك:

    javascript
    var str = "1200,00"; var regex = /\d+/; var result = str.replace(regex, ""); console.log(result); // النتيجة المتوقعة: 100

    في هذا المثال، تمثل \d+ جميع الأرقام المتتالية في السلسلة. يقوم \d بتوجيه التعبير إلى الأرقام، و+ يشير إلى أنه يجب أن يكون هناك رقم واحد أو أكثر.

    باستخدام str.replace(regex, "")، يمكنك استبدال أي سلسلة تحتوي على أرقام بالسلسلة الفارغة، وبالتالي الحصول على النتيجة المرجوة.

    تأكد من تجربة الكود وضمان أنه يعمل بشكل صحيح مع حالاتك الخاصة. إذا كانت لديك مزيد من الأسئلة أو تحتاج إلى توضيح إضافي، فلا تتردد في طرحه.

    المزيد من المعلومات

    التعابير العادية (Regular Expressions) تُستخدم للبحث عن نمط معين داخل سلاسل النصوص وتحقيق تحويلات على البيانات. في المثال الذي قدمته، استخدمت التعبير العادي /\d+/ حيث:

    • / تشير إلى بداية ونهاية التعبير العادي.
    • \d يمثل أي رقم.
    • + يشير إلى أن الرقم يمكن أن يتكرر ويتواجد مرة أو أكثر.

    بالتالي، \d+/ يعني البحث عن أي مجموعة من الأرقام المتتالية. وبما أنك ترغب في استبدال هذه المجموعة بسلسلة فارغة، يتم ذلك باستخدام str.replace(regex, "").

    يُفضل دائمًا فهم النمط الذي تستخدمه في التعابير العادية. قد تكون هناك مزيد من الخصائص يمكن أن تُضاف إلى التعبير لتلبية متطلبات محددة. على سبيل المثال، يمكنك تحديد عدد الأرقام المطلوبة باستخدام {}. في هذا السياق، {1,3} تعني أنه يجب أن يكون هناك بين رقم واحد وثلاثة أرقام.

    لضمان توافق الحالات المتعددة، يُفضل أيضًا استخدام الرمز g بعد النهاية / في التعبير للبحث عن جميع التطابقات في النص بدلاً من التوقف عند أول تطابق.

    على سبيل المثال، يمكن تحسين التعبير العادي ليكون كالتالي:

    javascript
    var str = "1200,00"; var regex = /\d{1,3}/g; var result = str.replace(regex, ""); console.log(result); // النتيجة المتوقعة: ""

    هذا يُعنى بالبحث عن مجموعات تتألف من رقم واحد إلى ثلاثة أرقام، وg يضمن البحث في جميع التطابقات داخل النص.

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر