regex - regular expression




تحتاج إلى ريجيكس للعثور على سلسلة فرعية بين توكينز (2)

جرب هذا:

B=([^;]+);

هذا يطابق كل شيء بين B= و ; ما لم يكن ; . لذلك يطابق كل شيء بين B= وأول ; بعد ذلك.

أظن أن هذا قد تم الرد عليه في مكان ما، لكنني لا أستطيع العثور عليه، لذلك ...

أحتاج إلى استخراج سلسلة من بين توكينز في سلسلة أكبر، حيث الرمز المميز الثاني ربما تظهر مرة أخرى معنى ... (رمز شبه ...)

myString = "A=abc;B=def_3%^123+-;C=123;"  ;

myB = getInnerString(myString, "B=", ";" )  ;

method getInnerString(inStr, startToken, endToken){
   return inStr.replace( EXPRESSION, "$1");
}

لذلك، عند تشغيل هذا باستخدام التعبير " .+B=(.+);.+ " أحصل على "٪ d = 123 + -؛ C = 123؛" ويفترض أنها تبحث فقط عن المثال الأخير من '؛' في السلسلة، بدلا من التوقف في أول واحد يأتي.

لقد حاولت استخدام (؟ =) في البحث عن تلك الأولى '؛' ولكنه يعطيني نفس النتيجة.

لا يمكنني العثور على مرجع مرجعي يوضح كيف يمكن للمرء تحديد الرمز "التالي" بدلا من الرمز المميز في النهاية.

أي وجميع مساعدة موضع تقدير كبير.

سؤال مماثل حول سو:


كنت تستخدم نمط الجشع من خلال عدم تحديد ? فيه. جرب هذا:

".+B=(.+?);.+" 




regex-greedy