تعبير منتظم للعثور على سلسلة في توقع المخزن المؤقت

StackOverflow https://stackoverflow.com/questions/2007321

سؤال

أحاول العثور على Regex الذي يعمل على مطابقة سلسلة من أحرف الهروب (أحد الرد، انظر هذا السؤال) وعدد من ستة أرقام (مع حرف ألفا الأول رقمي).

إليك السلسلة بأكملها التي أحتاج إلى تحديدها:

\r\n\u001b[1;14HX76196

في النهاية أحتاج إلى استخراج السلسلة:

X76196 

إليك ما لدي بالفعل:

interact {
        #...
        #...
        #this expression does not identify the screen location
        #I need to find "\r\n\u001b[1;14H" AND "([a-zA-Z0-9]{1})[0-9]{5}$"
        #This regex was what I was using before.
        -nobuffer -re {^([a-zA-Z0-9]{1})?[0-9]{5}$} {
                set number $interact_out(0,string)
        }   

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

أيضا بمجرد أن يكون لدي السلسلة الكاملة في متغير رقم $، كيف يمكنني عزل الرقم فقط في متغير آخر في TCL؟

هل كانت مفيدة؟

المحلول 2

لقد اكتشفت بعض الأشياء مع المزيد من الحفر. بادئ ذي بدء، لم أكن أبحث في إخراج البرنامج ولكن مدخلات المستخدم. كنت بحاجة إلى إضافة علامة "-o" لإلقاء نظرة على إخراج البرنامج. أنا أيضا تقصير Regex إلى الجزء اللازم فقط.

مثال Regex من rikh. قادني إلى البحث عن سبب فشل Regex الخاص به، وكان ذلك بسبب حقيقة أنني لم أكن أبحث في الإخراج ولكن المدخلات. لذا فإن Regex الأصلي الذي حاولت أنه ليس خطأ ولكن البيانات التي يتم النظر إليها (مفقودة "-o")

إليك الإجابة الكاملة لمشكلتي.

interact {
#...
    -o -nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} {
            #get number in place
            set numraw $interact_out(0,string)
            #get just number out
            set num [string range $numraw 6 11] 
            #switch to lowercase
            set num [string tolower $num]
            send_user "  stored number: $num"
    }   
}

أنا noob مع توقع و tcl لذلك إذا لم يكن أي من هذا منطقي أو إذا كان لديك المزيد من الأفكار في الأعلام التفاعلية، فيرجى ضبطني مباشرة.

نصائح أخرى

إذا كنت تريد فقط الرقم في النهاية، فينبغي أن يكون هذا كافيا ...

[0-9]{6}

تحديث مع معلومات جديدة

على افتراض N عبارة عن حرف جديد، بدلا من Nite حرفي - يتبعه N حرفي، يمكنك القيام بذلك ...

\r\n\u001B\[1;14H(X[0-9]{5})
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top