我可以使用什么正则表达式来查找简单的正则表达式

What Regular Expression Can I Use To Find Simple Regular Expressions

本文关键字:正则表达式 查找 简单 我可以 什么 可以使      更新时间:2023-09-26

如果我有一个字符串,它是正则表达式的来源:

"For example, I have (.*) string with ('.d+) special bits (but this is just an aside)."

有没有办法提取正则表达式的特殊部分?

特别是,我对调用时会返回值的部分感兴趣string.match(expr);

正则表达式可能很复杂,但如果您使用 (['.'']([*a-z])'+?) 执行全局正则表达式,它将捕获您的各个字段,而不会根据您的请求包含括号。下面也放了这个小提琴中的演示代码。

var testString = 'For example, I have (.*) string with (.d+) special bits (but this is just an aside). (''w+)';
var regex = /(['.'']([*a-z])'+?)/gi;
var matches_array = testString.match(regex);
//Outputs the following: [".*", ".d+", "'w+"]

正则表达式的功能不足以识别匹配括号的语言。 (形式证明使用正则表达式和有限状态机的等价性,以及可能存在无限多个嵌套级别的事实。 因此,匹配每个(后的第一个)将使('d+('.d+)?)返回('d+('.d+),而匹配每个(之后的最后一)将使('w+) ('w+)匹配整个字符串。

正确的方法是使用递归(数学正则表达式不允许递归,但实际实现如 PCRE 允许(。 您还可以获取非嵌套括号的简单表达式。 只是要小心解析转义字符:要完全健壮,'('''(是特殊的,但''(不是。