I want to match all valid prefixes of substitute
followed by other characters, so that
我想匹配所有有效的替换前缀后面跟着其他字符,这样
-
sub/abc/def
matches thesub
part. - sub/abc/def与sub - part相匹配。
-
substitute/abc/def
matches thesubstitute
part. - 替换/abc/def匹配替换部分。
-
subt/abc/def
either doesn't match or only matches thesub
part, not thet
. - subt/abc/def不是不匹配就是只匹配子部分,而不是t。
My current Regex is /^s(u(b(s(t(i(t(u(te?)?)?)?)?)?)?)?)?/
, which works, however this seems a bit verbose.
我现在的正则表达式/ ^ s(u(b(s(t(我(t(u(te)?)?)?)?)?)?)吗?)?/,但这似乎有点啰嗦。
Is there any better (as in, less verbose) way to do this?
有没有更好的方法(比如,少一点啰嗦)来做这件事?
2 个解决方案
#1
1
you could use a two-step regex
您可以使用两步regex
- find first word of subject by using this simple pattern
^(\w+)
- 找到第一个词的主题使用这个简单的模式^(\ w +)
- use the extracted word from step 1 as your regex pattern e.g.
^subs
against the wordsubstitute
- 用提取的词从步骤1你的正则表达式模式例如^潜艇对这个词替代
#2
2
This would do like the same as you mentioned in your question.
这和你在问题中提到的一样。
^s(?:ubstitute|ubstitut|ubstitu|ubstit|ubsti|ubst|ubs|ub|u)?
The above regex will always try to match the large possible word. So at first it checks for substitute
, if it finds any then it will do matching else it jumps to next pattern ie, substitut
, likewise it goes on upto u
.
上面的regex将始终尝试匹配较大的可能单词。所以一开始它检查替换,如果找到了,它会进行匹配否则它会跳转到下一个模式ie,替换,同样地,它会一直到u。
演示1演示2
#1
1
you could use a two-step regex
您可以使用两步regex
- find first word of subject by using this simple pattern
^(\w+)
- 找到第一个词的主题使用这个简单的模式^(\ w +)
- use the extracted word from step 1 as your regex pattern e.g.
^subs
against the wordsubstitute
- 用提取的词从步骤1你的正则表达式模式例如^潜艇对这个词替代
#2
2
This would do like the same as you mentioned in your question.
这和你在问题中提到的一样。
^s(?:ubstitute|ubstitut|ubstitu|ubstit|ubsti|ubst|ubs|ub|u)?
The above regex will always try to match the large possible word. So at first it checks for substitute
, if it finds any then it will do matching else it jumps to next pattern ie, substitut
, likewise it goes on upto u
.
上面的regex将始终尝试匹配较大的可能单词。所以一开始它检查替换,如果找到了,它会进行匹配否则它会跳转到下一个模式ie,替换,同样地,它会一直到u。
演示1演示2