שליפת כל המשפטים בעברית מתוך קובץ PHP
-
@nigun אמר בשליפת כל השפטים בעברית מתוך קובץ PHP:
אני מנסה לכתוב בnotepad++
/[\x{0590}-\x{05FF}]+/uוזה לא עובד
כי זה לא regex תקין. (ה-
/
בהתחלה וסוף הוא לא חלק משפת regex אלא שפת PHP, הכפילות של ה-\\
גם נצרך רק ב-PHP, ה-u
בסוף הוא דגל שגם לא חלק מה-regex)
זה תקין, אם כי יכול להיות שזה לא יעשה בדיוק מה שאתה רוצה...[\x{0590}-\x{05FF} ]+
-
@yossiz אמר בשליפת כל השפטים בעברית מתוך קובץ PHP:
עושה בדיוק מה שאני רוצה
(דהיינו מוצא משפטים שלמים)
אבל אני רוצה משהו כמו סקריפט שיוציא לי באופן מסודר את הכל
ניסיתי לכתוב משהו בפייתון אבל הסתבכתי עם הקידוד
האם זה הכיוון?import re string = unicode('אבגד', 'utf-8') pattern = '[\x{0590}-\x{05FF} ]+' result = re.findall(pattern, string) print(result)
-
@nigun אמר בשליפת כל השפטים בעברית מתוך קובץ PHP:
עושה בדיוק מה שאני רוצה
מקווה שזה נכון למרות שלא נראה לי...
לדוגמה:
אבל אני רוצה משהו כמו סקריפט שיוציא לי באופן מסודר את הכל
עדיין אין צורך בסקריפט, אפשר ב-vscode כך:
- ctrl+f
[א-ת ]+
- ctrl+shift+l (בוחר כל המופעים)
- ctrl+c
- ctrl+n
- ctrl+v
ניסיתי לכתוב משהו בפייתון אבל הסתבכתי עם הקידוד
import re string = u'\u05d0\u05d1\u05d2\u05d3 abc \u05d4\u05d5\u05d6\u05d7' # 'אבגד abc הוזח' pattern = u'[\u05d0-\u05ea ]+' # '[א-ת ]+' result = re.findall(pattern, string) print(result)
- ctrl+f
-
@nigun אם אתה לא מכיר את הנושא ודאי שווה ללמוד אותו
דרך אגב, ה-regex שכתבתי למעלה לא טוב (כי הוא "רעבתני" מדי...)
ניסיתי כך:['"].*?[א-ת].*?['"]
ועדיין לא עובד. אני לא מבין למה.
ה-?
אמור למגר את ה"רעבתנות". אבל הוא לא...
אולי @dovid יכול לשפוך אור על הנושא.
עריכה: הבנתי למה לא עובד. אבל עדיין לא יודע איך כן אפשר לכתוב אותו
עריכה2: זה עובד:['"][^"']*[א-ת][^"']*['"]
למעשה זה עדיין נכשל במקרים מסויימים אבל נראה לי שלטפל בזה מגרד את גבולות היכולת של regex-ים.
@nigun אמר בשליפת כל השפטים בעברית מתוך קובץ PHP:
או שעדיף להתחיל עם משהו יותר פשוט
לא נראה לי, זה לא נושא כל כך ענקי.
כאן יש אתר כיפי להתאמן
-
בדיוק לפני שבוע בניתי פונקציה (אסטריסק) שתשלוף את כל המשפטים בעברית, ושלוחה להקלטת כל המשפטים האלה לקריינות אנושית.
מכיוון שהיו גם טקסטים בעברית שלא צריכים קריינות (לדוגמא טקסט שנשלח במייל), אז ההגדרה היא שמה שמוקף במרכאות נקלט, ומה שבמרכאות כפולות לא.preg_match_all("#'(\p{Hebrew}.*)'#uisU", file_get_contents($script), $m);