שאלה בפייתון

rbg4

New member
שאלה בפייתון

היי זה כל הקוד

קוד:
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"


לא הבנתי את השורה הזאת
r'(.*) are (.*?) .*'
בשביל מה צריך את ה r מה מייצגות הכוכביות

ועוד משהו
searchObj.group(1)
ה 1 אומר להציג את המילה לפני המליה המתאימה ואילו 2 זה המילה אחרי המילה המותאמת (כלומר המילה הפו' נותנת )

תודה לעוזרים
 

BravoMan

Active member
השאלה שלך אינה ב-Python אלא ב-Regular Expressions

וזו כמעת שפה בפני עצמה.
זה מה שה-r לפני המחרוזת מסמן - שיש לפרש את המחרוזת כ-Regular Expression ולא להתייחס לתו \ כפי שנהוג לעשות עם מחרוזת רגילה.
&nbsp
כאן תוכל למצוא הסבר מפורט על השפה הזו:
https://docs.python.org/2/library/re.html
&nbsp
קבוצה group היא חלק מהתבנית שמוקף בסוגריים.
יש שתי זוגות סוגריים בביטוי בקוד שלך, אז אם הביטוי מתאים יהיו בו שתי קבוצות (תת ביטויים) וזה מה שהפונקציה תחזיר.
 

deepspace

New member
לא ממש מדוייק (לפחות החלק לגבי r)

אין קשר בין ''r ל- regex וכן מדובר בחלק מפייתון. המטרה היא כמו שכתבת, אך r מייצג raw וניתן להשתמש בו בכל מקום בפייתון, גם כאשר לא משתמשים ב- regex.
 
למעלה