首页 > 解决方案 > 下划线和字符串的 Python 正则表达式匹配

问题描述

我有以下格式的字符串:

在第一个和第二个下划线之间,文本是“red”或“blue”,在第二个下划线和第一对双下划线之间,文本是“one”或“two”。在第一组双下划线之间是一个名称。这可以包括单个名字或由单个下划线分隔的名字和姓氏。这个 Name 部分由双下划线包围定义,任何单下划线都表示它是 Name 的一部分。(注意,Name 的第一个字母必须是 CAPS)。下一组双下划线之间是一个昵称。同样,昵称可以是多个单词,但由一个下划线分隔。在第二组双下划线之间检测到的任何内容都将被视为昵称。第三个双下划线之后的其余部分可以是任何东西。如果需要多个单词,可以用一个下划线分隔。不必有字符串的剩余部分。

这是我到目前为止的正则表达式:

always_(?:red|blue)_(?:one|two)__[A-Z]{1,1}....

我不想使用 \w+ 来检查使用下划线的名称,因为这也将匹配名称后面的双下划线。我被困在哪里去。

为了进一步澄清,我想捕获任何不遵循该格式的字符串。

标签: pythonregex

解决方案


我想出了

always_(red|blue)_(one|two)__((?:[A-Z][a-z]+_?)+)__((?:_?[a-z]+)+)(?:__(\w+))?

适用于此处的示例,您可能需要进行更多测试


推荐阅读