使用正则表达式忽略包含子字符串的单词

2024-10-08 18:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初学者,在这方面花了相当多的时间。我部分地解决了这个问题。你知道吗

问题:我想忽略所有具有theThe的单词。例如atheist, others, The, the将被排除在外。但是,不应该包括hottie,因为the不是作为一个整体出现在单词内部。你知道吗

我使用的是Python的re引擎。你知道吗

这是我的正则表达式:

\b               - Start at word boundary
(?!              - Negative lookahead to avoid starting with the or The
   [t|T]he       - the and The
)
\w+              - Other letters are fine
(?<!             - Negative look behind
    [t|T]he      - the or The shouldn't occur before \w+
)
\b               - Word boundary

给定输入的预期输出:

Input: Atheist Others Their Hello the The bathe hottie tahaie theater

Expected Output: Hello hottie tahaie

正如人们在regex101中所看到的,除了atheist这样的词之外,我可以排除大多数词——即the or The出现在词中的情况。我在SO上搜索了这个,发现了一些线程,比如How to exclude specific string using regex in Python?,但它们似乎与我要做的事情没有直接关系。你知道吗

任何帮助都将不胜感激。你知道吗


请注意,我只对使用regex解决这个问题感兴趣。我不是在寻找使用python的字符串操作的解决方案。你知道吗


Tags: orthetohello时间单词regexhe
1条回答
网友
1楼 · 发布于 2024-10-08 18:19:47

该方法比原始正则表达式更简单:

\b(?!\w*[t|T]he)\w+\b

我们匹配一个单词,但要确保单词中没有the,使用“填充的”负向前看。您最初的方法只允许在单词的前面或后面使用the,因为它不允许在单词边界之后/之前使用填充。你知道吗

(?![tT]he)只匹配当前位置的,而(?:\w*[tT]he)允许匹配从当前位置扩展,因为\w*可以用作填充符。你知道吗

相关问题 更多 >

    热门问题