我正在尝试构建一个正则表达式,它将捕获字符串开头的三种模式之一。我已经弄清楚如何捕获每个模式,但我还没弄明白如何编写一个将匹配所有三个模板的正则表达式。以下是模式(每个模式最后都包含一个空格字符:
R[eE]:
R[eE]: \[a2geeks\]
R[eE]: \[a2geeks\] R[eE]:
我觉得有一种优雅的方式可以做到这一点,但我现在已经挣扎了大约一个小时。最好的答案也会向我解释它为何有效。
答案 0 :(得分:3)
这可能会起到作用。括号()
中的两个组由?
(=前面一个或多个表达式)组成。最终的R[eE]
嵌套在较大的()
组中,因为中间模式[a2geeks]
需要先发生。
^
表示模式应该在字符串的开头匹配,而ned的.*
匹配此模式后的字符串的其余部分。
^R[eE]:(\s\[a2geeks\](\sR[eE]:)?)?(.*)
答案 1 :(得分:1)
使用正则表达式可选:
^R[eE]: (\[a2geeks\] (R[eE]:)?)?