REGEX מורכב ביותר

amosexy

New member
REGEX מורכב ביותר

היי חברים, אני צריך עזרה עם ביטוי רגולרי שכנראה מורכב לי מדי..

נניח ופונקציה מקבלת את הטקסט הזה כפרמטר
"$id + "hello \' world \' " + $suffix"
אני מנסה לתפוס את הגרשיים כסטרינג ולעשות עליו SPLIT
שהתוצאה בעצם תהיה מערך של שני תאים שבאחד יש את $ID ובשני את $suffix

תודה רבה
 

Royi Namir

New member
אתה לא מובן

קודם כל הסטרינג שלך לא וואילידי
יש לך ["] בקצוות וזה לא וואלידי יחד עם מה שבפנים

דבר שני הבקשה לך לא מבונת
תן דוגמא יחד עם תוצאה רצויה.


מה גם שאם תעשה SPLIT על פי "גרשים כ STRING" - תקבל מערך עם 3 מקומות ולא 2.

בקיצור תיהיה יותר ברור.

ב
 

amosexy

New member
הביטוי חוקי, אני אסביר

נניח שהסטרינג שהפונקציה מקבלת נראה ככה:
$id + "hello \' world \' " + $suffix
אני רוצה שבתפיסה של זוג גרשיים.. או זוג של גרש בודד.. אני אתעלם מגרש או גרשיים שלפני זה בא \....

כלומר אני רוצה להשיג מ SPLIT של הדבר הזה את שתי הצדדים שהם:
$id +
+ $suffix
יש אפשרות כזאת?...
מצאתי REGEX שמוצא את התבנים ש MATCH שלו נותן תוצאה אחת אבל ה SPLIT שלו נותן משום מה 4 תוצאות...
 

Royi Namir

New member
אתה מסרב להבין

מה שרשמת מקודם זה
"$id + "hello \' world \' " + $suffix"

ולא
$id + "hello \' world \' " + $suffix

אז זה לא(!) היה וואלידי.

חוצ מזה , עדין לא הבאת דוגמא חיה
האם ID זה מספר ?
ומה זה SUFFIX ?
או האם התכוונת ל ID בתור המילה ID ?
מה אתה רוצה שהמערך הסופי יראה ? ( תן ערכים !! ולא TOKENS)
אני קצת מתפלא עליך שבמקום שהכי צריך להיות מדוייק - אתה הכי לא מדוייק

לא שואלים ככה שאלה.
 

amosexy

New member
אנסה שוב


התכוונתי שזה בא עם גרשיים עוטפות כמו שסטרינג נשלח.. ובעיבוד הם יורדות ולכן כתבתי בדוגמא השניה בלי..
&nbsp
בכל מקרה.. הכוונה שלי שזה מחרוזת אחת ארוכה שאני צריך לעבד...
ו ID ו SUFFIX הם לא TOKENS כרגע..
הם חלק מהמחרוזת.. שיש לי קוד שמטפל בטקסטים שלא עטופים גרשיים..
ולכן אני צריך לקחת את החלקים האלו ולבודד אותם..
&nbsp
 

Royi Namir

New member
כנראה אני לא מדבר עברית

ולא הבנת לגבי דוגמא אמיתית

הנה הקלט :....
הנה הפלט:....
 

amosexy

New member
תודה , זה עונה על חלק מהצורך

המחרוזת יכולה להכיל כמה קטעים כאלו... והם יכולים להיות עטופים בגרש בודד או בגרשיים ..
&nbsp
 

Royi Namir

New member
עכשיו אתה מבין על מה אני מדבר שאתה לא מדוייק?

תן 3 דוגמאות עם כל הווריאציות עם דוגמא לקלט ופלט
זו ההודעה החארוןנה שאני מנסה לעזור לך בתנאים שכאלה.
 

amosexy

New member
צודק , מחילה.. אכתוב פה כמה דוגמאות מפורטות

Expression is a String Type
Expression -> accepted result
$pre + "some value with \' \" and \'much more" + 'some string with \' \" \' ' + #prefix + "final string" -> [0] = "$pre + " [1] = " + " [2] =" + #prefix + "
$pre + ($id * @size) - @const + "some value with \' \" and \'much more" -> [0] ="$pre + ($id * @size) - @const + "
'some value with \' \" and \'much more' -> empty array
'some value with \' \" and \'much more" -> invalid string
'some value with \' \" and \'much more' + ($var1 + #var2) -> [0]=" + ($var1 + #var2)"
 

Royi Namir

New member
בבקשה ( למרות שייאשת אותי)


Regex lineSplitter = new Regex(@"(?<!\\)"".+?[^\\]""|(?<!\\)'.+?[^\\]'");

 

amosexy

New member
אלוף אתה

פתרון אלגנטי ויפה..
עשיתי תיקון קטן שיתאים לי פיקססס
תודה רבה
&nbsp
 
למעלה