سؤال

أريد أن أكتب RegEx لسحب كافة قيم المتغيرات وأسمائها من بيان تعريف المتغير.قل لدي

إنت ط، ك = 10، ل = 0

أريد أن أكتب regex شيئًا مثل int s^،؟(بدون سابقة int) الفكرة بشكل أساسي هي إذا بدأت String بـ int ، فاحصل على القائمة المتغيرة المنفصلة عن طريق ،

أعرف كيفية استخراج قيم CSV، ولكن هنا تحتوي سلسلتي على بعض القيمة الأولية أيضًا.كيف يمكنني حلها؟

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

المحلول

والبدء في التفكير في بنية التعريف، مثلا،

(a line can start with some spaces) followed by,

(Type) followed by

(at least one space)
(variable_1)
(optionally
   (comma // next var
    |
    '='number // initialization
    ) ...`

وبعد ذلك محاولة لتحويل كل مجموعة:

^      \s*    \w+           \s+        \w+         ?          (','    |  '=' \d+   ) ...
line  some    type          at least  var          optionally   more  or init some
start spaces  (some chars)  one space (some chars)              vars     val  digits

واليسار كما الواجبات المنزلية لإزالة المسافات وتحديد ما يصل التعبير المعتاد النهائي.

نصائح أخرى

إليك بعض المعلومات المفيدة التي يمكنك استخدامها

http://compsci.ca/v3/viewtopic.php?t=6712

هل يمكن بناء الخاصة بك التعبير العادية من [C # النحوي] (<لأ href = "http://msdn.microsoft.com/en-us/library/aa664812(VS.71).aspx)" يختلط = "نوفولو noreferrer"> http://msdn.microsoft.com/en-us/library/aa664812 (VS.71) .aspx اتصال) . ولكن بناء محلل سيكون بالتأكيد أفضل.

وجرب هذا:

 ^(int|[sS]tring)\s+\w+\s*(=\s*[^,]+)?(,\s*\w+\s*(=\s*[^,]+)?)*$

وانها سوف تتطابق مع المثال التعليمات البرمجية

int i,k = 10,l=0

وجعل بعض الافتراضات حول اللغة التي قد تكون أو لا تستخدم، وأنها سوف تتناسب أيضا:

int i, j, k=10, l=0
string i=23, j, k=10, l=0
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top