在 Regex 中使用一次静态字符串,同时使用 OR 的两种模式

Use static string once in Regex while using two patterns with OR

这是我的正则表达式:

STATICSTRING\s[a-zA-Z]:\[\\S|*\S]?.*$|STATICSTRING\s\w*

如您所见,有两种模式,\s[a-zA-Z]:\[\\S|*\S]?.*$\s\w*| 运算符组合。并且 STATICSTRING 在每个中重复。

有什么办法可以写一次STATICSTRING吗?

您可以在分组构造中使用 | 交替运算符来对两个子模式进行分组:

STATICSTRING\s(?:[a-zA-Z]:\[\\S|*\S]?.*$|\w*)
              ^^^                         ^   ^

但是,\[\\S|*\S]?.* 部分看起来像是用户错误。它匹配 \,然后出现 1 次或 0 次 \|* 或任何非空白字符,然后 .* 匹配任何 0+字符到行尾。如果您打算匹配其他任何内容,请确保修复它。但是 \w* 分支总是 "win" 因为它总是匹配(空字符串或字母(并且 [a-zA-Z] 也匹配字母))。所以,上面的模式等于 STATICSTRING\s\w*.