تعبير منتظم للعثور على سلسلة في توقع المخزن المؤقت
سؤال
أحاول العثور على 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})