regex 我怎样匹配一个模式,然后所有的东西都回到那个模式呢?所以,匹配下面例子中的所有单词和首字母缩写词

kpbwa7wx  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(86)
上下文

我有下面这段话:

text = """
בביהכנ"ס - בבית הכנסת דו"ח - דין וחשבון הת"ד -  התיקוני דיקנא
בגו"ר  - בגשמיות ורוחניות ה"א - ה' אלוקיכם התמי' - התמיהה
בהנ"ל - בהנזכר לעיל ה"א - ה' אלקיך ואח"כ - ואחר כך
בהשי״ת - בהשם יתברך ה"ה - הרי הוא / הוא הדין ואת"ה - ואיגוד תלמידי 
"""

这一段与希伯来语单词及其首字母缩写词结合在一起。
单词包含引号(")。
例如,有些词可以是:

[
    'בביהכנ"ס',
     'דו"ח',
     'הת"ד'
 ]

现在,我可以用这个正则表达式来匹配所有的单词:

(\b[\u05D0-\u05EA]*\"\b[\u05D0-\u05EA]*\b)

问题

但是,我怎样才能将所有对应的首字母缩写词作为一个单独的组来匹配呢?(首字母缩写词是不匹配的,所以不是图中的绿色)。
缩写词示例如下:

[
    'בבית הכנסת',
    'דין וחשבון',
    'התיקוני דיקנא'
]
预期输出

预期输出应为字典,单词为keys,缩写为values

{
    'בביהכנס': 'בבית הכנסת',
    'דו"ח': 'דין וחשבון',
    'הת"ד': 'התיקוני דיקנא'
}
我的尝试

我试着匹配所有的单词(如上图):

(\b[\u05D0-\u05EA]*\"\b[\u05D0-\u05EA]*\b)

然后匹配所有内容,直到模式再次显示为.*\1,因此整个正则表达式将为:

(\b[\u05D0-\u05EA]*\"\b[\u05D0-\u05EA]*\b).*\1

但正如你所见,这行不通:

  • 我如何将单词和首字母缩写词匹配起来,用单词/首字母缩写词组成字典?
备注

当你打印输出时,它可能是按从左到右的顺序打印的。但实际上应该是从右到左。所以如果你想从右到左打印,请看下面的答案:
right-to-left languages in Python

slsn1g29

slsn1g291#

您可以尝试:

import re

# I've pasted your hebrew text to my text editor and now is mirrored (probably the text editor doesn't have the hebrew support)
text = """
בביהכנ"ס - בבית הכנסת דו"ח - דין וחשבון הת"ד -  התיקוני דיקנא
בגו"ר  - בגשמיות ורוחניות ה"א - ה' אלוקיכם התמי' - התמיהה
בהנ"ל - בהנזכר לעיל ה"א - ה' אלקיך ואח"כ - ואחר כך
בהשי״ת - בהשם יתברך ה"ה - הרי הוא / הוא הדין ואת"ה - ואיגוד תלמידי 
"""

pat = re.compile(r"\b([\u05D0-\u05EA]*[\"״][\u05D0-\u05EA]*)\b")

data = [
    w.strip(" -") for w in pat.split(" ".join(text.split("\n"))) if w.strip()
]

# To get your desired result I've reversed the order character in words. If your editor has support for hebrew text, you probably should skip it (remove the [::-1] part).
out = dict(((k[::-1], v[::-1]) for v, k in zip(data[::2], data[1::2])))
print(out)

打印(注意键/值已交换)

{
    "תסנכה תיבב": 'ס"נכהיבב',
    "ןובשחו ןיד": 'ח"וד',
    "אנקיד ינוקיתה": 'ד"תה',
    "תוינחורו תוימשגב": 'ר"וגב',
    "ההימתה - 'ימתה םכיקולא 'ה": 'א"ה',
    "ליעל רכזנהב": 'ל"נהב',
    "ךיקלא 'ה": 'א"ה',
    "ךכ רחאו": 'כ"חאו',
    "ךרבתי םשהב": "ת״ישהב",
    "ןידה אוה / אוה ירה": 'ה"ה',
    "ידימלת דוגיאו": 'ה"תאו',
}

相关问题