我要抓字
ferrari
、ferry
和 ferret
。
正则表达式很容易是:
/ferr(ari|y|et)/
但是,我注意到一个模式:当您想捕获单个 单词的多个备选方案时,您可以使用方括号[wordsToCapture]
。例如,我想捕捉单词:vowel a
、vowel e
、vowel u
、vowel o
, 元音 i
.
正则表达式可以是:vowel [aeiou]
,它比 vowel (a|e|i|o|u)
噪音小
所以我尝试使用方括号来捕捉分组词的多种选择。但是,[...]
(方括号)使我的捕获组((...)
圆括号)变得无用,这意味着如果我使用此正则表达式 ferr[(ari)(y)(et)]
,它将匹配:ferr(
, ferra
, ferrr
, ferri
,并且该列表针对方括号中出现的每个一个字符继续。
有没有办法让方括号内的捕获组括号保留其特殊含义,从而使我的 RegExp 更简洁?还是有其他方法让它更简洁?
最佳答案
否 - 方括号表示字符集。如果你想匹配多组字母,你需要使用你之前使用的符号。
/ferr(ari|y|et)/
关于javascript - Terser RegExp 捕捉分组词的备选集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590955/