【问题标题】:Python Regex for preposition in sentencePython Regex 用于句子中的介词
【发布时间】:2019-08-12 21:29:22
【问题描述】:

我有一个句子在单词中有介词或介词,我想将“di”和“ke”这两个词分开。

link中的代码

sentence = "kemana dimanake di daladi dipukul ke situ"
regex_patern = r"^(di)|(ke)"

我想要的句子是

result= "ke mana di manake di daladi di pukul ke situ"

【问题讨论】:

    标签: regex python-3.x string


    【解决方案1】:

    一个选项是匹配kedi,然后断言一个单词边界不匹配\B 的位置。

    (?:ke|di)\B
    

    如果 ke 或 di 不应该是 longer word 的一部分,您可以使用单词边界 \b(?:ke|di)\B 在模式前添加。

    然后用完整的匹配替换,后跟一个空格:

    \g<0>

    Regex demo | Python demo

    例如

    import re
    
    sentence = "kemana dimanake di daladi dipukul ke situ"
    regex_patern = r"(?:ke|di)\B"
    print(re.sub(regex_patern, r"\g<0> ", sentence))
    

    结果

    ke mana di manake di daladi di pukul ke situ

    如果您想让匹配范围更广,您还可以使用正向前瞻(?=\S) 断言右侧的内容是非空白字符。

    (?:ke|di)(?=\S)
    

    Regex demo

    【讨论】:

    • 为什么不在正则表达式模式中使用 ^?
    • @AlhamsyaBintangDyasta ^ 断言字符串的开头,在您的示例数据中,di 应该在多个位置匹配。
    • @AlhamsyaBintangDyasta:是否可以有以“ke”或“di”开头的单词?
    • @CasimiretHippolyte 你是对的,我已将其添加到答案中。
    • 如果我需要每个单词的限制,如何?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2019-09-23
    • 1970-01-01
    • 2014-12-31
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多