Javascript/Perl正则表达式

Javascript/Perl正则表达式,javascript,regex,Javascript,Regex,(?:)和(?=)之间的区别是什么?我假设第一个返回它在匹配函数中匹配的文本(但在应用于子表达式组编号时不返回,但不确定我是否正确。提前感谢:-)我知道它们的用途,但我不确定它们的行为有何不同。还可以将重复字符应用于前瞻性断言吗?(?:)创建一个不会被捕获的组,即存储在任何反向引用中。它通常用于您需要一个组,但不关心将其包含在捕获组中的情况。这将提高性能并整理反向引用 (?=)是一个先行断言。它用于在不使用任何字符作为匹配项的情况下查找某些内容。(?:)创建一个不会被捕获的组,即存储在任何反向引

(?:)
(?=)
之间的区别是什么?我假设第一个返回它在匹配函数中匹配的文本(但在应用于子表达式组编号时不返回,但不确定我是否正确。提前感谢:-)我知道它们的用途,但我不确定它们的行为有何不同。还可以将重复字符应用于前瞻性断言吗?

(?:)
创建一个不会被捕获的组,即存储在任何反向引用中。它通常用于您需要一个组,但不关心将其包含在捕获组中的情况。这将提高性能并整理反向引用

(?=)
是一个先行断言。它用于在不使用任何字符作为匹配项的情况下查找某些内容。

(?:)
创建一个不会被捕获的组,即存储在任何反向引用中。它通常用于您需要一个组,但不关心将其包含在捕获组中的情况。这将提高性能并整理反向引用


(?=)
是一个先行断言。它用于在不使用任何字符作为匹配项的情况下查找某些内容。

因此,这两种结构的特点是不返回任何内容<代码>(?:…)的使用方式与普通的
(…)
相同,只是其结果不会被捕获和返回。在Perl中,我相信Javascript,这可以提高性能,因为正则表达式引擎不必记住匹配的子字符串


(?=)
的想法是不同的。您可以将正则表达式的任何组件看作是“吃掉”匹配字符串的某个子集。但不能使用
(?=)
。另一种思考方式是,
(?=)
后面的任何内容都在字符串中与
(?=)
本身匹配的完全相同的位置进行匹配,而不是像普通组一样在它的末尾。

因此这两种结构都不返回任何内容<代码>(?:…)的使用方式与普通的
(…)
相同,只是其结果不会被捕获和返回。在Perl中,我相信Javascript,这可以提高性能,因为正则表达式引擎不必记住匹配的子字符串


(?=)
的想法是不同的。您可以将正则表达式的任何组件看作是“吃掉”匹配字符串的某个子集。但不能使用
(?=)
。另一种想法是,
(?=)
后面的内容与
(?=)
本身在字符串中的匹配位置完全相同,而不是像普通组一样在它的末尾。

你说不返回是什么意思?这是捕获
(?:)和不捕获
(?:)之间的区别
分组。对于非捕获,您无法在之后发现源代码中的哪些文本与特定子模式匹配,只有当整个模式匹配时它必须匹配。当您说“未返回”是什么意思?这是捕获
()
和非捕获
(?:)
组之间的区别。对于非捕获,您无法在之后发现源中的文本与特定子模式匹配,只有当整个模式匹配时,它必须匹配。