在 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*
.
这是我的正则表达式:
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*
.