Javascript/Perl正则表达式
Javascript/Perl正则表达式,javascript,regex,Javascript,Regex,(?:)和(?=)之间的区别是什么?我假设第一个返回它在匹配函数中匹配的文本(但在应用于子表达式组编号时不返回,但不确定我是否正确。提前感谢:-)我知道它们的用途,但我不确定它们的行为有何不同。还可以将重复字符应用于前瞻性断言吗?(?:)创建一个不会被捕获的组,即存储在任何反向引用中。它通常用于您需要一个组,但不关心将其包含在捕获组中的情况。这将提高性能并整理反向引用 (?=)是一个先行断言。它用于在不使用任何字符作为匹配项的情况下查找某些内容。(?:)创建一个不会被捕获的组,即存储在任何反向引
(?:)
和(?=)
之间的区别是什么?我假设第一个返回它在匹配函数中匹配的文本(但在应用于子表达式组编号时不返回,但不确定我是否正确。提前感谢:-)我知道它们的用途,但我不确定它们的行为有何不同。还可以将重复字符应用于前瞻性断言吗?(?:)
创建一个不会被捕获的组,即存储在任何反向引用中。它通常用于您需要一个组,但不关心将其包含在捕获组中的情况。这将提高性能并整理反向引用
(?=)
是一个先行断言。它用于在不使用任何字符作为匹配项的情况下查找某些内容。(?:)
创建一个不会被捕获的组,即存储在任何反向引用中。它通常用于您需要一个组,但不关心将其包含在捕获组中的情况。这将提高性能并整理反向引用
(?=)
是一个先行断言。它用于在不使用任何字符作为匹配项的情况下查找某些内容。因此,这两种结构的特点是不返回任何内容<代码>(?:…)的使用方式与普通的(…)
相同,只是其结果不会被捕获和返回。在Perl中,我相信Javascript,这可以提高性能,因为正则表达式引擎不必记住匹配的子字符串
(?=)
的想法是不同的。您可以将正则表达式的任何组件看作是“吃掉”匹配字符串的某个子集。但不能使用(?=)
。另一种思考方式是,(?=)
后面的任何内容都在字符串中与(?=)
本身匹配的完全相同的位置进行匹配,而不是像普通组一样在它的末尾。因此这两种结构都不返回任何内容<代码>(?:…)的使用方式与普通的(…)
相同,只是其结果不会被捕获和返回。在Perl中,我相信Javascript,这可以提高性能,因为正则表达式引擎不必记住匹配的子字符串
(?=)
的想法是不同的。您可以将正则表达式的任何组件看作是“吃掉”匹配字符串的某个子集。但不能使用(?=)
。另一种想法是,(?=)
后面的内容与(?=)
本身在字符串中的匹配位置完全相同,而不是像普通组一样在它的末尾。你说不返回是什么意思?这是捕获(?:)和不捕获(?:)之间的区别
分组。对于非捕获,您无法在之后发现源代码中的哪些文本与特定子模式匹配,只有当整个模式匹配时它必须匹配。当您说“未返回”是什么意思?这是捕获()
和非捕获(?:)
组之间的区别。对于非捕获,您无法在之后发现源中的文本与特定子模式匹配,只有当整个模式匹配时,它必须匹配。