Regex 正则表达式忽略字符串部分的单词

Regex 正则表达式忽略字符串部分的单词,regex,python-3.x,Regex,Python 3.x,我有一段文字: '1 2 3 ab AB úá awindow BCwindow' 目前,为了只获取单词,我使用这个正则表达式:[a-zA-Zá-ú]+,结果如下: ['ab', 'awindow', 'bcwindow', 'úá'] 我想删除“窗口”字符串中的mathes单词以获得以下内容: ['ab','a','bc','úá'] 谢谢。如果单词窗口总是出现在匹配单词的末尾,您可以执行以下操作: (?<!\S)[a-zA-Zá-ú]+?(?:(?!\S)|(?=window))

我有一段文字:

'1 2 3 ab AB úá awindow BCwindow'
目前,为了只获取单词,我使用这个正则表达式:
[a-zA-Zá-ú]+
,结果如下:

['ab', 'awindow', 'bcwindow', 'úá']
我想删除“窗口”字符串中的mathes单词以获得以下内容:

['ab','a','bc','úá']
谢谢。

如果单词窗口总是出现在匹配单词的末尾,您可以执行以下操作:

(?<!\S)[a-zA-Zá-ú]+?(?:(?!\S)|(?=window))

细分:

  • \b
    匹配单词边界位置(单词的起始位置)
  • [a-zA-Zá-ú]+?
    至少对类中的字符进行一次不加密的匹配
  • (?:
    非捕获组的开始
    • \b
      匹配单词边界(这里我们指的是单词的结尾)
    • |
    • (?=window)
      正向前瞻,断言以下字符是
      window
  • 非捕获组结束

每当第二个单词边界匹配或肯定的前瞻性断言时,引擎就会满足要求,并且该点之前的所有内容都会作为匹配项返回。

这里的规则是什么?迭代数组并替换窗口内容,或者尝试窗口是否应该在所有字母之后出现。另外,尝试@revo Answers可以完美地工作!谢谢。你能一步一步地解释一下吗?谢谢
\b[a-zA-Zá-ú]+?(?:\b|(?=window))