例如/(www\.)?(.+)(\.com)?/.exec("www.something.com")
会导致' something.com'在结果数组的索引1处。但是,如果我们只想捕获某些东西,那该怎么办呢?在一个捕获组?
澄清:
答案 0 :(得分:2)
(?:www\.)?(.+?)(?:\.com|$)
这只会在something
中提供groups
。只是让其他群组无法捕获。请参阅演示。
答案 1 :(得分:0)
如果您只想捕获"某些内容",请为其他部分使用非捕获组:
/(?:www\.)?(.+)(?:\.com)?/.exec("www.something.com")
?:
表示群组为非捕获。
答案 2 :(得分:0)
从正则表达式中删除最后一个字符(?
)可以解决问题:
https://regex101.com/r/uR0iD2/1
最后?
允许有效输出而(\.com)
不匹配任何内容,因此(.+)
可以匹配www.
之后的所有字符。
另一种选择是替换贪婪量词+
,它总是尝试匹配尽可能多的字符与+?
,后者尝试匹配为较少个字符尽可能:
(www\.)?(.+?)(\.com)?$
https://regex101.com/r/oY7fE0/2
请注意,必须通过行尾锚点($
)强制匹配整个字符串。