【问题标题】:How does the regex pattern '(?<=.)(?=[A-Z])' work?正则表达式模式 \'(?<=.)(?=[A-Z])\' 是如何工作的?
【发布时间】:2022-11-23 23:56:07
【问题描述】:

我遇到了拆分大写单词的问题。我看到他们中的一些人使用 re.split() 将非大写单词与大写单词分开。

例子:

输入是:

>>> x = 'TheLongAndWindingRoad' 

产出:

['The', 'Long', 'And', 'Winding', 'Road']

我遇到了一个帖子使用

>>> re.split('(?<=.)(?=[A-Z])', 'TheLongAndWindingRoad')
['The', 'Long', 'And', 'Winding', 'Road']

该代码对我来说效果很好,我想知道他们是怎么想到的

'(?<=.)(?=[A-Z])' 

【问题讨论】:

  • 所以,你了解正则表达式,但你不知道别人怎么能想到它?
  • @ThomasWeller 我认为意图很明确。 OP 对正则表达式有基本的了解,但不了解这些(相当高级的)。
  • “这个正则表达式是如何工作的”: 把它放进regex101 看看

标签: python regex string


【解决方案1】:

?&lt;= 是回顾。 ?= 是前瞻性的。

因此,字符串将在空字符(两个字符之间的位置)处拆分,其中它前面有任何内容(.),后面有一个大写字母([A-Z])。

看起来 (?=[A-Z]) 就足够了(在大写字母前面分开),但这会让你在前面留下一个空字符串.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 2011-08-26
    • 1970-01-01
    • 2010-12-11
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多