需要帮助构建正则表达式

时间:2012-02-15 03:41:10

标签: python regex

我正在尝试构建一个正则表达式,它将捕获字符串开头的三种模式之一。我已经弄清楚如何捕获每个模式,但我还没弄明白如何编写一个将匹配所有三个模板的正则表达式。以下是模式(每个模式最后都包含一个空格字符:

  • R[eE]:
  • R[eE]: \[a2geeks\]
  • R[eE]: \[a2geeks\] R[eE]:

我觉得有一种优雅的方式可以做到这一点,但我现在已经挣扎了大约一个小时。最好的答案也会向我解释它为何有效。

2 个答案:

答案 0 :(得分:3)

这可能会起到作用。括号()中的两个组由?(=前面一个或多个表达式)组成。最终的R[eE]嵌套在较大的()组中,因为中间模式[a2geeks]需要先发生。

^表示模式应该在字符串的开头匹配,而ned的.*匹配此模式后的字符串的其余部分。

^R[eE]:(\s\[a2geeks\](\sR[eE]:)?)?(.*)

答案 1 :(得分:1)

使用正则表达式可选:

^R[eE]: (\[a2geeks\] (R[eE]:)?)?